Dus*_*ica 5 django cron amazon-ec2 amazon-elastic-beanstalk
我无法让我的cron作业执行.
建立:
Django - 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 * * * *"
Run Code Online (Sandbox Code Playgroud)使用容器命令和单独的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
Run Code Online (Sandbox Code Playgroud)
在.ebextensions/crontab.txt中
*/10 * * * * source /opt/python/run/venv/bin/activate && python mysite/manage.py test
Run Code Online (Sandbox Code Playgroud)
该应用程序在两种情况下都能成功部署.
source /opt/python/run/venv/bin/activate && python mysite/manage.py test为管理命令会在部署时运行一次正确的脚本.日志不会在该URL上显示任何GETS.
我究竟做错了什么?我是否错过了流程的一些步骤或EBS上的一些设置步骤?
另外,为EBS托管的django应用程序运行cron作业的最佳方法是什么? - django apps可以在命令行中运行管理命令,如尝试2中所示,也可以通过扩展GET或POST URL来进行尝试1.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1861 次 |
| 最近记录: |