首页 > 解决方案 > 在 docker 容器内为 django 运行 cron 作业时,manage.py 脚本出错

问题描述

我有一个运行 django 应用程序的 docker 容器,该应用程序也在其中运行一个 cron 作业。由于此错误,托管命令不断失败:

manage.py 中的第 14 行

line 14
) from exc
     ^
SyntaxError: invalid syntax

我的 cron 工作如下所示:

0 1 * * 1-5 python manage.py myCommand

我试着把它改成这个,看看是否能解决问题:

0 1 * * 1-5 /usr/local/bin/python /absolute/path/to/project/manage.py myCommand

标签: pythondjangodockercron

解决方案


这是使用错误 Python 版本时遇到的典型错误。根据您在问题下的评论:

docker 容器使用的是 python 3.5。当我运行 python -V 时,我得到 Python 3.5.6

当使用您打开的 shell 会话时,您可以看到您的用户 $PATH指向 Python 3.5.6 。关于 cron 作业有一件事情经常让人们陷入困境:cron 打开一个不同的 shell 并且无法访问您的. 因此,在您的情况下,它指向 Python 2.x。$PATH

有很多方法可以克服这一点。可能最简单的方法是通过运行检查 Python 3 的位置

$ which python3

并使用您的 cron 命令中的输出路径。例如,对于我的系统,它将是:

0 1 * * 1-5 /usr/bin/python3 manage.py myCommand

推荐阅读