代码之家  ›  专栏  ›  技术社区  ›  Mark

在cron.yaml上设置retry_参数

  •  0
  • Mark  · 技术社区  · 6 年前

    我正在设置一个与应用引擎应用程序(标准环境,python 3)相关的cron作业,并希望它在失败2分钟后重试。无论我投入多少价值 retry_parameters 它似乎在1分钟后重试。在看医生的时候,我没有看到最长的等待时间,所以我想知道我是否把 cron.yaml 不知何故。

    一切都很好地工作,除了它比我想的更快地重试。这是山药,这是限量还是弄乱了。

    克朗 :

    cron:
    - description: "daily call"
      url: /twilio/start_call/
      timezone: "America/Anchorage"
      schedule: every day 17:00
      retry_parameters:
        min_backoff_seconds: 120.0
        max_backoff_seconds: 360.0
        max_doublings: 3
    

    编辑:

    下面是使用 克朗 . 函数每次返回503,直到最后一次,cron以1分钟的间隔触发作业:

    2018-11-26 17:00:00.764 AKST GET 503 178 B 970 ms AppEngine-Google (+http://code.google.com/appengine) /twilio/start_call/
    2018-11-26 17:01:01.939 AKST GET 503 178 B 704 ms AppEngine-Google;(+http://code.google.com/appengine) /twilio/start_call/
    2018-11-26 17:02:02.747 AKST GET 503 178 B 850 ms AppEngine-Google;(+http://code.google.com/appengine) /twilio/start_call/
    2018-11-26 17:03:03.702 AKST GET 503 178 B 666 ms AppEngine-Google;(+http://code.google.com/appengine) /twilio/start_call/
    2018-11-26 17:04:04.477 AKST GET 200 189 B 65 ms AppEngine-Google; (+http://code.google.com/appengine) /twilio/start_call/
    

    以下是特定日志条目的展开形式:

    {
      httpRequest: {
        status: 503
      }
      insertId: "5bfca521000b366ac405955e"
      labels: {
        clone_id: "00c61b117cda9e441fb74ae3fd3225f528216a2a7e2fd701de97c95ac79fdc86ce3014f397"
      }
      logName: "projects/caller-app/logs/appengine.googleapis.com%2Frequest_log"
      operation: {
        first: true
        id: "5bfca52000ff0baa94727d8d2500016d7e7368656c7465722d63616c6c65720001323031383131323674313033313038000100"
        last: true
        producer: "appengine.googleapis.com/request_id"
      }
      protoPayload: {
        @type: "type.googleapis.com/google.appengine.logging.v1.RequestLog"
        appEngineRelease: "1.9.65"
        appId: "m~caller-app"
        cost: 1.9892999999999998e-8
        endTime: "2018-11-27T02:00:01.734682Z"
        finished: true
        first: true
        host: "caller-app.appspot.com"
        httpVersion: "HTTP/1.1"
        instanceId: "00c61b117cda9e441fb74ae3fd3225f528216a2a7e2fd701de97c95ac79fdc86ce3014f397"
        instanceIndex: -1
        ip: "0.1.0.1"
        latency: "0.970118s"
        megaCycles: "123"
        method: "GET"
        requestId: "5bfca52000ff0baa94727d8d2500016d7e7368656c7465722d63616c6c65720001323031383131323674313033313038000100"
        resource: "/twilio/start_call/"
        responseSize: "178"
        startTime: "2018-11-27T02:00:00.764564Z"
        status: 503
        taskName: "22a1b20373e6b0b93d21726ad7218cff"
        taskQueueName: "__cron"
        traceId: "54903137240fb57e546907087fb94ca5"
        traceSampled: true
        urlMapEntry: "auto"
        userAgent: "AppEngine-Google; (+http://code.google.com/appengine)"
        versionId: "20181126t103108"
      }
      receiveTimestamp: "2018-11-27T02:00:01.759151584Z"
      resource: {
        labels: {
          module_id: "default"
          project_id: "caller-app"
          version_id: "20181126t103108"
          zone: "us-west2-3"
        }
        type: "gae_app"
      }
      timestamp: "2018-11-27T02:00:00.764564Z"
      trace: "projects/caller-app/traces/54903137240fb57e546907087fb94ca5"
      traceSampled: true
    }
    1 回复  |  直到 6 年前
        1
  •  2
  •   Mark    6 年前

    所以这是一个简单的误读文档的案例。但如果有人也误读了它

    回答 503 是个特例。文件说明:

    默认情况下,除非返回503状态代码,否则不会重试失败的作业,在这种情况下,每分钟重试一次,直到成功或返回200-299状态代码。

    它没有明确地说,但这意味着当服务器用 五百零三 状态 retry_parameters 在里面 cron.yaml 被忽略,它仍然每分钟重试一次。