如何在crontab + virtual env中运行自定义manage.py?

时间:2013-02-08 15:35:21

标签: python django virtualenv crontab

如何在crontab中运行

*/1 * * * * /home/user/Desktop/job/dp/ python manage.py statistics

虚拟环境?我需要先激活virtualenv(否则它不起作用)

这是我的虚拟环境:

source job/bin/activate

2 个答案:

答案 0 :(得分:15)

<强> EDITED

尝试这样的事情:

*/1 * * * * . /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics

这应该被理解为:激活env,如果成功,则执行manage.py脚本。由于manage.py应该有一个python shebang,虚拟env设置正确的python解释器,这应该可以工作。

显然cron通常以/bin/sh运行,而source不知道source命令。因此,一种选择是使用点作为/bin/bash替换。另一个在cron文件中设置SHELL=/bin/bash */1 * * * * source /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics

source

详细了解此问题: http://codeinthehole.com/writing/running-django-cronjobs-within-a-virtualenv/ 文章没有提及.可以被{{1}}取代,但我刚试过它并且它对我有用。所以你现在有几个选择可供选择,文章甚至还有其他选择。 ;)

答案 1 :(得分:4)

使用~/envs/someenv/lib/python /path/to/your/script

之类的内容

在您的情况下,它看起来像

*/1 * * * * ~/envs/someenv/lib/python /home/user/Desktop/job/dp/manage.py statistics