使用 crontab 在弹性 beanstalk worker 实例上运行 django 管理命令
Posted
技术标签:
【中文标题】使用 crontab 在弹性 beanstalk worker 实例上运行 django 管理命令【英文标题】:Run django management command on elastic beanstalk worker instance using crontab 【发布时间】:2019-07-31 19:40:18 【问题描述】:我已经编写了几个我想每小时、每天和每周运行的 django 管理命令。我正在使用 Elastic Beanstalk 并创建了一个部署代码的工作实例。有人可以帮助我如何使用弹性 beantalk 使用 crontab 运行 django 管理命令。谢谢
这是我的管理命令:
python manage.py command_name
请帮我在 .ebextensions/django.config 文件中为 crontab 编写 container_command,它将每小时安排一次命令。谢谢
有什么帮助吗?
【问题讨论】:
到目前为止你有什么尝试?container_commands: run_cron: command: */60 * * * * python /path/to/manage.py command_name
这是写在 .ebextensions/django.config 文件中的。
【参考方案1】:
在.ebextensions
创建文件crontab.txt
# Set the cron to run with utf8 encoding
PYTHONIOENCODING=utf8
0 1 * * * root source /opt/python/current/env && nice /opt/python/current/app/manage.py command_name
# this file needs a blank space as the last line otherwise it will fail
这是一个 crontab 文件,它将在每天凌晨 1 点运行 command_name。您需要根据您的文件结构选择正确的路径。
在您的一个配置文件中包括:
02_cron_job:
command: "cp .ebextensions/crontab.txt /etc/cron.d/my_cron_jobs && chmod 644 /etc/cron.d/my_cron_jobs"
leader_only: true
这会将您的 cron 文件复制到 ec2 实例上的正确位置,以便作业运行。
【讨论】:
以上是关于使用 crontab 在弹性 beanstalk worker 实例上运行 django 管理命令的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接
无法在 AWS 中使用 RDS 创建弹性 Beanstalk 环境
在 git repo 中安装 AWSDevTools 以在 windows 上使用弹性 beanstalk