【问题标题】:schedule cron job executed twice in different time (AWS Beanstalk)安排在不同时间执行两次的 cron 作业(AWS Beanstalk)
【发布时间】:2017-08-24 08:01:50
【问题描述】:

我使用 AWS Beanstealk php 工作环境。

我在 cron.yaml 中管理我的 cron 作业

version: 1
cron:
 - name: "prepare-technical"
   url: "/workers/cron/event/prepare/technical"
   schedule: "45 0 * * *"

我不明白为什么,但是这个 cron 会在不同的时间执行两次:

127.0.0.1 (-) - - [24/Mar/2017:00:44:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [24/Mar/2017:00:52:43 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [25/Mar/2017:00:44:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [25/Mar/2017:00:49:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [26/Mar/2017:00:44:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [26/Mar/2017:00:53:23 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [27/Mar/2017:00:44:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [27/Mar/2017:00:50:35 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [28/Mar/2017:00:45:00 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [28/Mar/2017:00:50:00 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [29/Mar/2017:00:44:59 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [29/Mar/2017:00:50:16 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

127.0.0.1 (-) - - [30/Mar/2017:00:45:00 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"
127.0.0.1 (-) - - [30/Mar/2017:00:50:21 +0000] "POST /workers/cron/event/prepare/technical HTTP/1.1" 200 - "-" "aws-sqsd/2.3"

你知道我该如何解决这个问题吗? 谢谢

【问题讨论】:

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


    【解决方案1】:

    默认情况下,如果您的网络服务器在五分钟内没有响应,则会重新发布工作。有几种可能的方法:

    1) 增加Configuration/Worker Configuration/Advanced Options下的“Inactivity Timeout”。最大值为 1800(30 分钟)。

    2) 通过增加处理能力或将它们拆分成更小的块,让您的作业运行得更快。

    3) 收到作业后,在后台线程中执行,并立即从主线程返回。

    【讨论】:

    • 感谢您的帮助。我的 cron 非常简单快速(最多执行 45 秒),并在完成时返回一个响应。我该怎么做你的 3) ?
    • 如果您的工作真的那么快,那么将它们放在后台线程中只会增加复杂性而不会解决您的问题。您的工作完成后是否返回200
    • 是的 return new Response(null, 200);
    • 我用我的 200 statut 发送邮件正文时解决了我的问题(在我返回 null 之前)
    猜你喜欢
    • 2013-03-28
    • 2022-12-21
    • 1970-01-01
    • 2019-03-07
    • 2015-06-23
    • 2015-12-02
    • 2016-11-25
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多