【问题标题】:Custom command on elastic beanstalk prompts invalid syntax in manage.py fileelastic beanstalk上的自定义命令提示manage.py文件中的语法无效
【发布时间】:2020-06-15 18:43:09
【问题描述】:

我一直在试图弄清楚如何最好地使用 cronjobs 调用脚本,但无法弄清楚。要么我使用自定义命令,我在 .ebextension/"some config file" 中使用以下内容:

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: 尝试在没有已知父包的情况下进行相对导入

我很迷茫,希望能得到任何帮助。

【问题讨论】:

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


    【解决方案1】:

    我设法找到了一个可行的解决方案:

    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版本问题造成的。

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 2016-06-10
      • 2014-08-03
      • 2013-10-05
      • 1970-01-01
      • 2018-06-17
      • 2020-06-20
      • 2017-04-28
      • 2012-08-13
      相关资源
      最近更新 更多