【问题标题】:Run a task every hour on the hour with App Engine's cron API使用 App Engine 的 cron API 每小时运行一次任务
【发布时间】:2010-12-02 21:08:54
【问题描述】:

我需要在一周中的每一天(00:00、01:00、02:00、...、23:00)每小时运行一项任务,但似乎找不到示例在 App Engine 的文档中了解如何执行此操作。

有一个每小时在询问时运行的示例,但这不适合,因为该小时的“开始”取决于您部署应用程序的时间。也就是说,如果我在下午 4:37 部署,cron 脚本将在 5:37、6:37...而不是 5:00、6:00...

到目前为止,看起来可行的唯一方法是设置 24 个不同的 cron 条目,其中一个用于设置为每天在该特定时间运行的每一天的特定时间。

有没有人知道任何可以让我使用“每小时 00 点”甚至“每天 00:00、01:00、... 23:00”这样的时间表?

【问题讨论】:

  • 我相信这是一个设计决定,以防止服务器在 00 点运行每个人的任务并导致服务器过载。

标签: python google-app-engine cron


【解决方案1】:

你可以这样做,并放弃确切的时间,但它会很接近......

(示例来自我正在调试的应用程序)

cron:
- description: Description of what you want done...
  url: /script/path/goes/here
  schedule: every 60 minutes synchronized
  timezone: America/New_York

以下是日志截图,该应用目前没有流量, 其中 99% 的条目都是 cron 条目。

--- 编辑 ---

只需重新阅读文档,也许这可能会更好,

  schedule: every 60 minutes from 00:00 to 23:59

【讨论】:

  • 似乎它们是相同的:“您可以使用文字“同步”作为从 00:00 到 23:59 的同义词”
  • 我没有测试过,但也许是。
【解决方案2】:

不幸的是,cron 语法不允许您为小于一天的时间间隔指定时间。但是,您可以为此使用Task Queue。要么:

  1. 有一个任务队列条目,当它运行时,将一个新任务排入队列,并将“倒计时”设置为距离您下次要运行的秒数。
  2. 有一个每日 cron 作业,在您希望它运行的每个时间将 24 小时任务队列条目排入队列。

【讨论】:

  • 如果有人好奇的话,这种在每天 00:01 运行一项任务的方法(使用 eta 参数)非常有效。
【解决方案3】:

文档说你可以有 20 个 cron 条目,所以你不能在一天中的每个小时都有一个。

您可以每分钟运行一次任务并检查它是否是一小时的第一分钟 - 否则退出。

【讨论】:

    【解决方案4】:

    查看文档,我同意您的 24 cron 条目想法是唯一可行的记录方式。不理想,但应该可以。

    【讨论】:

    • 20 个任务不会涵盖所有 24 小时 :( - “一个应用程序最多可以有 20 个计划任务。”
    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 2020-10-23
    • 2019-10-09
    • 2012-03-12
    • 1970-01-01
    • 2022-01-03
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多