在docker容器中为django运行cron作业时manage.py脚本出错

时间:2019-03-08 14:36:05

标签: python django docker cron

我有一个运行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

1 个答案:

答案 0 :(得分:2)

这是使用错误的Python版本时遇到的典型错误。在您对问题的评论之后:

  

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

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

有很多方法可以克服这个问题。可能最简单的一种是通过运行

来检查Python 3的位置
$ which python3

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

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