【问题标题】:Delete Elastic Beanstalk Cron删除 Elastic Beanstalk Cron
【发布时间】:2019-10-17 20:52:50
【问题描述】:

我正在使用弹性 beantalk 的 cron.yaml 来触发周期性任务。但是,如果我重新部署我的代码,cron 会被触发两次,它的效果很好。再次部署,任务将被触发 3 次,等等。如何删除现有的 crons,以便在部署时只有一个 cron 实例?

【问题讨论】:

    标签: amazon-web-services cron amazon-elastic-beanstalk


    【解决方案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 只运行一次。

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2016-08-31
        • 1970-01-01
        • 2019-04-20
        • 2013-08-13
        • 2017-04-20
        • 2023-01-03
        • 2019-02-11
        • 2016-04-03
        相关资源
        最近更新 更多