我一直在尝试找出如何最好地用cronjobs调用脚本,却无法弄清楚。我要么使用自定义命令,要么在.ebextension /“某些配置文件”中使用以下命令:
container_commands:
01_some_cron_job:
command: "cat .ebextensions/some_cron_job.txt > /etc/cron.d/mycron && chmod 644 /etc/cron.d/mycron"
leader_only: true
some_cron_job.txt:
* * * * * root source /opt/python/run/venv/bin/activate && source /opt/python/current/env && /usr/bin/python /opt/python/current/app/manage.py cron_command >> /var/log/myjob.log 2>&1
这在我在本地运行命令时有效,但是将其上传到eb后出现以下错误:
文件“ /opt/python/current/app/manage.py”,第18行 ),来自exc ^ SyntaxError:语法无效
或者我可以直接调用脚本:
* * * * * root source /opt/python/run/venv/bin/activate && source /opt/python/current/env && /usr/bin/python /opt/python/current/app/api/cron.py >> /var/log/myjob.log 2>&1
但是,当尝试从同一目录中的另一个文件导入函数时,却出现导入错误:
ImportError:尝试了相对导入,但没有已知的父包
我很迷茫,不胜感激。
答案 0 :(得分:0)
我设法找到了一个可行的解决方案,而不是我使用的地方:
files:
"/etc/cron.d/mycron":
mode: "000644"
owner: root
group: root
content: |
0/10 * * * * root source /opt/python/current/env && /opt/python/run/venv/bin/python3 /opt/python/current/app/manage.py cron_command >> /var/log/newjob.log 2>&1
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/mycron.bak"
我认为问题是由于虚拟环境中的某些python版本问题引起的。