如何设置cronjob以在AWS弹性beanstalk中运行Django管理命令

时间:2016-10-03 12:35:41

标签: django cron elastic-beanstalk

我有一个在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弹性beanstalk中作为cron作业运行Django管理命令的正确方法吗?我们是否需要在运行命令之前激活虚拟环境?

1 个答案:

答案 0 :(得分: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/