J'ai un script python qui se connecte à un hôte externe, récupère des données et remplit une base de données Django avec les données. Le script python qui renseigne la base de données utilise ces lignes pour configurer l'environnement de django:Exécution d'un script python pour django via cron
path = os.path.normpath(os.path.join(os.getcwd(), '..'))
sys.path.append(path)
from django.core.management import setup_environ
import settings
setup_environ(settings)
J'ai un script shell qui exécute en fait le script python:
export PYTHONPATH=$PYTHONPATH:/home/django/project_dir/
cd ~/project_dir/scripts/
~/virtualenv/bin/python my_script.py
Et puis ma config Cron, qui est placé dans /etc/cron.d/
0 1 * * * django ~/project_dir/scripts/my_script.sh > /var/log/django_cron.log
Notez que le projet de django a son propre utilisateur et environnement virtuel.
Le script shell s'exécute correctement lorsque je suis connecté en tant qu'utilisateur django. Mais le cron ne va pas courir! Je n'obtiens aucune erreur dans le fichier journal. Je suis sûr que c'est quelque chose de très simple, mais je ne le vois tout simplement pas ...
Quelque chose ne montrant dans/var/log/cron'? –
Y a-t-il une raison pour ne pas utiliser une commande de gestion? –
Je reçois des entrées dans le journal cron que le cronjob a été exécuté à l'heure spécifiée, donc pas de problème. –