2

cron 计划的最小值和最大值是多少?cron 可以运行多长时间?24小时?下面的代码与时间表一起工作是 1 分钟。

   cron:
    - description: test
      url: /test
      schedule: every 1 minutes

但我想让它 30 秒

所以我写了

 cron:
    - description: test
      url: /test
      schedule: every 30 seconds

但是当我更新应用程序时它只会返回错误。

4

1 回答 1

7

Cron 不支持小于一分钟的粒度。至于 GAE 中的 cron 会运行多长时间,文档说

由 cron 调用的 HTTP 请求最多可以运行 10 分钟,但受到与其他 HTTP 请求相同的限制。

这向我表明 cron 请求与任务队列请求相同。对前端实例的请求有 10 分钟完成执行,而对后端实例的请求有 24 小时的截止日期。

编辑: 如果您真的需要 30 秒的 cron 粒度,可以通过利用TaskQueue 中的 Taskcountdown属性来解决一些问题。步骤如下:

  1. 有一个一分钟的 cron 执行与您预期的 /test servlet 不同的 servlet。
  2. 让这个 servlet 创建两个指向预期 /test servlet 的任务。每个任务的属性都有 30 和 60 个值countdown
  3. 将两个任务推送到 TaskQueue。

或者,您可以在 servlet 启动后的 30 秒和 60 秒处预先计算预期的 ETA,并将其放入eta属性中以获得更好的粒度。

最后需要注意的是eta,并countdown不能保证任务会在规定的时间执行。如果您的队列已饱和,或者您的实例超载,则可能会出现一些延迟。

于 2013-03-19T10:39:33.107 回答