[英]How do I run Django Management > Commands as cron jobs in Elastic Beanstalk running nginx
[英]Running cron jobs on aws elastic beanstalk - django
我无法执行我的 cron 作业。
设置:
姜戈 - 1.9
Elastic beanstalk - 运行 Python 3.4 的 64 位 Amazon Linux 2016.03 v2.1.3
到目前为止,我已经尝试过几种方法:
使用 cron.yaml 文件:没有触及其他任何东西 - 只是在我的项目根文件夹中添加了一个 cron.yaml 文件
version: 1 cron:
- name: "test" url: "http://website.com/workers/test" schedule: "*/10 * * * *"
使用容器命令和单独的 cron.txt 文件:
在我的 .ebextensions/development.config 文件中添加了这一行
05_some_cron:
command: "cat .ebextensions/crontab.txt > /etc/cron.d/crontab && chmod 644 /etc/cron.d/crontab"
leader_only: true
并在 .ebextensions/crontab.txt
*/10 * * * * source /opt/python/run/venv/bin/activate && python mysite/manage.py test
应用程序在这两种情况下都成功部署。
source /opt/python/run/venv/bin/activate && python mysite/manage.py test
作为管理命令在部署时运行正确的脚本。日志不会在该 url 上显示任何 GETS。
我究竟做错了什么? 我是否遗漏了流程的某个步骤或 EBS 上的某个设置步骤?
此外,为 EBS 上托管的 django 应用程序运行 cron 作业的最佳方法是什么? - django 应用程序可以像尝试 2 那样从命令行运行管理命令,也可以像尝试 1 那样通过扩展 GET 或 POST url 来运行管理命令。
2018 更新使用Django 2.0.6 + AWS ElasticBeanstalk + Cronjob
我发现我需要使用 source /opt/python/current/env 导出 AWS 环境变量,以防止 manage.py 抛出错误“SECRET_KEY 设置不能为空”。
这是因为我已将我的 Django Secret 密钥放在 os.environ for beanstalk 中,默认情况下它似乎无法通过 shell/cron 访问。
请参阅https://forums.aws.amazon.com/thread.jspa?threadID=108465
我的最终 cron 作业 .txt 脚本如下。 (process_emails 是我自己的django 管理函数,myjob.log 是记录函数调用输出的地方)。
*/15 * * * * source /opt/python/run/venv/bin/activate && cd /opt/python/current/app/ && source /opt/python/current/env && python manage.py process_emails >> /var/log/myjob.log 2>&1
这在Django 1.10.6 + AWS ElasticBeanstalk + Cronjob 中对我有用
* * * * * source /opt/python/run/venv/bin/activate && cd /opt/python/current/app/ && python manage.py do_your_thing > $HOME/cron-sqs.log 2>&1
do_your_thing是一个管理命令
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.