删除 Elastic Beanstalk Cron
Posted
技术标签:
【中文标题】删除 Elastic Beanstalk Cron【英文标题】:Delete Elastic Beanstalk Cron 【发布时间】:2019-10-17 20:52:50 【问题描述】:我正在使用弹性 beantalk 的 cron.yaml 来触发周期性任务。但是,如果我重新部署我的代码,cron 会被触发两次,它的效果很好。再次部署,任务将被触发 3 次,等等。如何删除现有的 crons,以便在部署时只有一个 cron 实例?
【问题讨论】:
【参考方案1】:答案在这里:Running a cron job in Elastic Beanstalk
Cron 任务是通过 SQS 队列实现的。如果 cron.yaml 中的端点返回 200 以外的任何值,则触发消息将保留在队列中,并会反复重试。
一旦您确定所有 cron 端点都返回 200,清除队列,冗余调用将停止。
【讨论】:
【参考方案2】:您可以使用.ebextensions
定义在您的每个实例上运行的命令,并将这些命令限定为仅在一个实例上运行leader_only: true
.
例如,
.ebextensions/01_setup_cron.config
container_commands:
01_some_cron_job:
command: "cat .ebextensions/your_cron.txt > /etc/cron.d/your_Cron && chmod 644 /etc/cron.d/your_cron"
leader_only: true
.ebextensions/your_cron.txt
* * * * * root /usr/bin/do-something.sh
# Don't forget to put a blank new line at the end of the cron - cron won't work without it
这会将 cron 文件复制到 /etc/cron.d/
仅用于一个实例(“领导”实例),这意味着您的 cron 只运行一次。
【讨论】:
以上是关于删除 Elastic Beanstalk Cron的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CRON 作业设置
Aws Elastic Beanstalk 不执行 cron.yaml 文件
AWS Elastic Beanstalk 中的 Cron 来触发 js 文件
在 Elastic Beanstalk 中运行 cron 作业