J'essaie d'exécuter une commande de gestion Django à partir de cron. J'utilise virtualenv pour garder mon projet en sandbox.
J'ai vu des exemples ici et ailleurs qui montrent l'exécution de commandes de gestion à partir de virtualenv comme:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Cependant, même si syslog affiche une entrée au moment où la tâche aurait dû démarrer, cette tâche ne s'exécute jamais réellement (le fichier journal du script est vide). Si j'exécute la ligne manuellement depuis le shell, cela fonctionne comme prévu.
La seule façon dont je peux actuellement exécuter la commande via cron, est de décomposer les commandes et de les placer dans un script wrapper dumb bash:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
ÉDITER:
ars a trouvé une combinaison fonctionnelle de commandes:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Au moins dans mon cas, l'invocation du script d'activation pour le virtualenv n'a rien fait. Cela fonctionne, ainsi de suite avec le spectacle.
env
et export
tous dans un wrapper de script bash que vous appelez à partir de la crontab.