【问题标题】:How to run custom manage.py in crontab + virtual env?如何在 crontab + 虚拟环境中运行自定义 manage.py?
【发布时间】:2013-01-24 10:08:04
【问题描述】:

如何在crontab中运行

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

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

这是我的虚拟环境:

source job/bin/activate

【问题讨论】:

    标签: python django virtualenv crontab


    【解决方案1】:

    已编辑

    试试这样的:

    */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 统计不工作
    • 我已经更新了我的答案。还请确保使用绝对路径或将它们与cd 命令相应地链接起来。
    【解决方案2】:

    使用类似~/envs/someenv/lib/python /path/to/your/script的东西

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      相关资源
      最近更新 更多