python - 在 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
解决方案
这是使用错误 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
推荐阅读
- java - BorderLayout.Center 不适用于 JPanel
- sql - 使用 SQL 中的时间戳获取一年中的第一个和最后 6 个月
- java - 在 Spring Boot REST 应用程序中存储临时的每日数据
- javascript - HTML5 Canvas:用颜色填充透明图像并在顶部绘图
- android - Android 无法从后台服务连接套接字
- javascript - 将异步函数传递给 promise.all()
- visual-studio - 在 Visual Studio 中恢复 nuget 包时发生错误“路径不是合法形式”
- c# - SQL INNER JOINS 的 LINQ 语法
- c# - 仅当前面有 (\d{2} -) 时才在 html 中查找链接 (href)
- javascript - 在一个 monaco 编辑器中结合多种语言