如何在 crontab + 虚拟环境中运行自定义 manage.py?

7

如何在crontab中运行

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

使用虚拟环境吗?我需要先激活虚拟环境(否则它将无法正常工作)

这是我的虚拟环境:

source job/bin/activate
2个回答

16

已编辑:

可以尝试类似这样的内容:

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

这个应该这样理解:激活虚拟环境,如果成功了就执行 manage.py 脚本。由于 manage.py 应该有一个 Python shebang ,而虚拟环境设置了正确的 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可以被.替换,但我刚刚尝试了一下,它对我有用。所以现在你有几个选项可供选择,这篇文章甚至还有其他选项。;)


*/1 * * * * /Desktop source job/bin/activate && /home/user/Desktop/job/dp python manage.py statistics not work每分钟执行一次,但是无法正常工作。请检查路径和命令是否正确。 - user2054574
我已经更新了我的答案。请确保使用绝对路径或相应地使用“cd”命令链接它们。 - Dirk Eschler

4

使用类似以下的命令 ~/envs/someenv/lib/python /path/to/your/script

在您的情况下,应该如下所示

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接