【问题标题】:Crontab fails to run django manage commandsCrontab 无法运行 django 管理命令
【发布时间】:2014-06-08 13:35:32
【问题描述】:

我在 django 中编写了一个脚本,将保存在数据库中的排队电子邮件发送给用户。有一个管理命令应该由 crontab 每小时调用一次以发送电子邮件。但是,每当执行 crontab 作业时,我都会收到以下错误:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: libpq.so.5: cannot open shared object file: No such file or directory

我的 django 应用程序运行良好,没有任何错误。但是运行 crontab 失败。以下是我的 crontab 配置:

0 * * * * source /opt/portal/virtEnv/bin/activate && python /opt/portal/websource/manage.py send_queued_messages --limit=1

有人知道如何解决这个问题吗?

【问题讨论】:

  • crontab 有不同的环境变量。试试0 * * * * env > /tmp/env.txt 看看缺少哪个变量?

标签: python django crontab psycopg2


【解决方案1】:

AFAIK 你不能在 cronjob 中使用 activate 脚本,只需将它指向你的 virtualenv 中的 python 解释器,它就会工作:

0 * * * * /opt/portal/virtEnv/bin/python /opt/portal/websource/manage.py send_queued_messages --limit=1

【讨论】:

  • 一个愚蠢的问题:你的 venv 中安装了 psycopg2 吗? .)
【解决方案2】:

我找到了解决方案。 我必须将 LD_LIBRARY_PATH 环境变量添加到 crontab 配置中,路径指向 postgres db 的 lib 文件夹。

现在可以顺利运行了。

【讨论】:

    【解决方案3】:

    尝试指向 virtualenv 中的 python 版本。不要激活和使用python。

    试试这个:

    0 * * * * /opt/portal/virtEnv/bin/python /opt/portal/websource/manage.py send_queued_messages --limit=1
    

    已编辑:删除了命令开头的“源”。

    【讨论】:

    • 对不起,我没有看到@yedpodtrzitko 的答案
    • 我刚刚更正了我的答案,因为你要使用virtualenv的python,所以不需要使用'source'。
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多