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

use*_*574 6 python django crontab virtualenv

如何在crontab中运行

*/1 * * * * /home/user/Desktop/job/dp/ python manage.py statistics
Run Code Online (Sandbox Code Playgroud)

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

这是我的虚拟环境:

source job/bin/activate
Run Code Online (Sandbox Code Playgroud)

Dir*_*ler 15

编辑:

尝试这样的事情:

*/1 * * * * . /path-to-env/bin/activate && /home/user/Desktop/job/dp/manage.py statistics
Run Code Online (Sandbox Code Playgroud)

这应该被理解为:激活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
Run Code Online (Sandbox Code Playgroud)

有关此问题的更多信息,请访问:http: //codeinthehole.com/writing/running-django-cronjobs-within-a-virtualenv/ 文章没有提到source可以替换为a .,但我刚试过它它对我有用.所以你现在有几个选择可供选择,文章甚至还有其他选择.;)