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

我有一个在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管理命令的正确方法吗?在运行命令之前是否需要激活虚拟环境?

最佳答案 是的,您需要在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/

点赞