如何在crontab中运行自定义的manage.py和虚拟环境?
如何在定时任务(crontab)中运行
*/1 * * * * /home/user/Desktop/job/dp/ python manage.py statistics
使用虚拟环境时,我需要先激活虚拟环境(否则它是无法工作的)
这是我的虚拟环境:
source job/bin/activate
2 个回答
4
你可以使用类似这样的命令:~/envs/someenv/lib/python /path/to/your/script
在你的情况下,它会像这样:
*/1 * * * * ~/envs/someenv/lib/python /home/user/Desktop/job/dp/manage.py statistics
16
编辑:
可以试试这样做:
*/1 * * * * . /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics
这段话的意思是:先激活环境,如果成功了,就执行manage.py这个脚本。因为manage.py应该有一个python的开头标记,而且虚拟环境会设置正确的python解释器,所以这样应该没问题。
显然,cron通常是用 /bin/sh
来运行的,而这个环境不认识 source
这个命令。所以一个选择是用一个点(.)来替代 source
。另一个选择是在cron文件中设置 /bin/bash
:
SHELL=/bin/bash
*/1 * * * * source /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics
想了解更多这个问题,可以查看:
http://codeinthehole.com/writing/running-django-cronjobs-within-a-virtualenv/
这篇文章没有提到 source
可以用一个点(.)来替代,但我试过了,确实有效。所以现在你有几个选择可以考虑,文章里还有其他的选项哦。;)