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