【问题标题】:How to set a cronjob to run a Django management command in AWS elastic beanstalk如何设置 cronjob 以在 AWS 弹性 beantalk 中运行 Django 管理命令
【发布时间】:2017-02-11 09:52:31
【问题描述】:

我有一个在 AWS Elastic beanstalk 中运行的 Django 应用程序。我需要运行一个每 10 分钟运行一次 Django 管理命令的 cron 作业(python manage.py test)。为此,我创建了一个 .ebextensions/cron.config 文件。

.ebextensions/cron.config
container_commands:
  01_some_cron_job:
    command: "cat .ebextensions/cron_test.txt > /etc/cron.d/cron_test && chmod 644 /etc/cron.d/some_cron_job"

.ebextensions/cron_test.txt

*/10 * * * * /opt/python/run/venv/bin/python34 /opt/python/current/app/manage.py  test

这是在 AWS 弹性 beantalk 中将 Django 管理命令作为 cron 作业运行的正确方法吗?运行命令前需要激活虚拟环境吗?

【问题讨论】:

  • 我知道这是一个老问题,但您找到解决问题的方法了吗?
  • @nbeuchat 不,我有另一种选择来使用芹菜来完成这项任务。
  • @Nijo:谢谢!我正在研究两者,希望我能弄清楚 cron 工作,因为它似乎更容易达到我们的目的
  • @nbeuchat 你可以试试这个stackoverflow.com/questions/14077095/…
  • 这些cmet中的相关文章的链接都是php问题,所以这里不相关,因为这个问题是关于python环境的,由于设置的虚拟环境不同起来。

标签: django cron amazon-elastic-beanstalk


【解决方案1】:

是的,您需要在 Elastic Beanstalk 设置的虚拟环境的上下文中运行命令,但是不,您不需要在运行命令之前激活所述环境。至少这是我对它的理解。示例文件:.ebextensions/cron.config

files:
    "/etc/cron.d/mycron":
        mode: "000644"
        owner: root
        group: root
        content: |
            MAILTO=example@example.com

            */10 * * * * root source /opt/python/current/env && python3 /opt/python/current/app/manage.py test

不保证这会奏效 - 我现在正在自己测试它,所以可能有问题,但我的一位同事在他们的网站上使用了这种通用方法。

有关 Elastic Beanstalk cronjobs 而非虚拟环境的文档位于此处:https://aws.amazon.com/premiumsupport/knowledge-center/cron-job-elastic-beanstalk/

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 2017-09-03
    • 2022-01-13
    • 1970-01-01
    • 2015-08-26
    • 2014-01-26
    • 2019-07-31
    • 2021-03-23
    • 2018-11-19
    相关资源
    最近更新 更多