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

如何在AWS elastic beanstalk中设置cronjob以运行Django管理命令,django,cron,amazon-elastic-beanstalk,Django,Cron,Amazon Elastic Beanstalk,我有一个Django应用程序在AWS Elastic beanstalk中运行。我需要运行一个cron作业,该作业每10分钟运行一次Django管理命令(python manage.py test)。为此,我创建了一个.ebextensions/cron.config文件 .ebextensions/cron.config container_commands: 01_some_cron_job: command: "cat .ebextensions/cron_test.txt &

我有一个Django应用程序在AWS Elastic beanstalk中运行。我需要运行一个cron作业,该作业每10分钟运行一次Django管理命令(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 elastic 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的文档,但不是关于虚拟环境的文档,位于此处:

我知道这是一个老问题,但您找到了解决问题的方法吗?@nbuchat没有,我有另一种方法可以使用芹菜来完成任务。@Nijo:谢谢!我正在研究这两个问题,希望我能找到cron的工作,因为这对我们的客户来说似乎更容易purpose@nbeuchat您可以尝试这样做。这些评论中的相关文章的两个链接都涉及php问题,因此它们在这里不相关,因为这个问题是关于python环境的,这与所设置的虚拟环境有很大不同。