弹性beantalk上的自定义命令提示manage.py文件中的语法无效

时间:2020-03-03 11:31:19

标签: python django amazon-web-services cron amazon-elastic-beanstalk

我一直在尝试找出如何最好地用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:尝试了相对导入,但没有已知的父包

我很迷茫,不胜感激。

1 个答案:

答案 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版本问题引起的。