【问题标题】:Google app engine cron scheduler is not using synchronizedGoogle 应用引擎 cron 调度程序未使用同步
【发布时间】:2019-07-04 23:41:33
【问题描述】:

我想每隔 2 分钟运行一次 cron,0,2,4,6,8 .... 每个 cron 执行运行 2 分钟。

我如下配置了同步的 cron 计划。但我仍然看到调度程序的行为好像没有给出同步。

Cron 计划在

0-2 第一个定时任务

4-6 秒 cron

8-10 第三个 cron

Cron 调度程序在上次 cron 执行后等待 2 分钟。

如果我对同步的理解正确,添加它是为了避免这种行为。

为什么会这样。

  <cron>
  <url>/cron/syncPrices</url>
    <description>Fetch data from source and cache it in data store.</description>
    <schedule>every 2 minutes synchronized</schedule>
  </cron>

【问题讨论】:

    标签: google-app-engine cron


    【解决方案1】:

    您可以在左侧Cron Jobs 菜单中的old GAE console 上检查应用程序的实际cron 配置。您希望确认相应工作是否存在 synchronized(或其等效的 from 00:00 to 23:59):

    • 如果synchronized 丢失,则可能是在常规应用程序上传期间没有上传/更新 cron.yaml 文件 - 我注意到我的多模块 (python) 应用程序就是这种情况。您必须使用 AppCfg 实用程序的 update_cron 选项专门更新 cron 配置。

    • 如果 synchronized 确实存在并且意外行为继续存在,您应该向 Google 提出支持案例。

    【讨论】:

    • 我对字面“同步”的理解与 OP 相同。例如,我想每 5 分钟运行一次 cron。但我的 cron 需要 10 分钟才能完成。如果没有“同步”,预期的行为是第一个 cron 在 10:00 开始,在 10:10 完成任务,下一个 cron 在 10:15 开始(每 5 分钟)。但是使用 'synchronized 意味着,第一个任务将在 10:00 开始,它将运行到 10:10。无论第一个 cron 是什么,第二个 cron 都将在 10:05 开始。但根据 OP,即使他使用“同步”,第二个 cron 也从 10:15 开始,这不是所需的行为
    • 我在处理请求之前和之后添加了日志语句。时间证实了我的理解。 21:08:03 开始​​,21:10:0 结束 21:12:04 开始 21:14:02 结束。第一个 cron 执行结束和第二个 cron 执行开始之间有两分钟的间隔。
    • Appologies,我的第一个答案完全关闭,我刚刚完全更新了它。
    • 在另一个测试中,我将“同步”更改为“从 00:00 到 23:00”。但我观察到了同样的行为。在旧的应用引擎门户中,我可以看到“从 00:00 到 23:00 (UTC) 每 2 分钟一班”。这意味着我的 cron 文件已在 GAE 中更新。我会用谷歌打开一个问题跟踪器。
    【解决方案2】:

    仅供参考,看起来“同步”不再是 cron.yaml 文档的一部分。我已通过文档反馈链接联系了 Google。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多