猿问

Cron和virtualenv

我正在尝试从cron运行Django管理命令。我正在使用virtualenv将我的项目沙盒化。


我在这里和其他地方都看到了一些示例,这些示例显示了在virtualenv内部运行管理命令的过程,例如:


0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg

但是,即使syslog在任务应该启动时显示一个条目,该任务也不会实际运行(脚本的日志文件为空)。如果我从外壳程序手动运行该行,它将按预期工作。


当前,我可以通过cron来运行命令的唯一方法是将命令分解并将其放入笨拙的bash包装器脚本中:


#!/bin/sh

source /home/user/project/env/bin/activate

cd /home/user/project/

./manage.py command arg

编辑:


ars提出了一种有效的命令组合:


0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg

至少就我而言,为virtualenv调用激活脚本没有任何作用。这是可行的,因此在演出中如此。


MMTTMM
浏览 428回答 3
3回答

明月笑刀无情

与其摆弄特定于virtualenv的shebang,不如摆PATH在crontab上。在激活的virtualenv中,运行以下三个命令,并且python脚本应该可以正常工作:$ echo "PATH=$PATH" > myserver.cron$ crontab -l >> myserver.cron$ crontab myserver.cron现在,crontab的第一行应如下所示:PATH=/home/me/virtualenv/bin:/usr/bin:/bin:  # [etc...]
随时随地看视频慕课网APP

相关分类

Python
我要回答