使用App Engine的cron API每小时整点运行任务
我需要每小时整点(00:00, 01:00, 02:00, ..., 23:00)执行一个任务,每周每天都要这样做,但在App Engine的文档中找不到相关的例子。
虽然有一个每小时执行任务的例子,但这不太适合,因为那个小时的“开始”时间是根据你部署应用的时间来决定的。也就是说,如果我在下午4:37部署应用,定时脚本就会在5:37、6:37等时间执行,而不是在5:00、6:00等整点执行。
到目前为止,看起来唯一可行的方法就是设置24个不同的定时任务,每个任务对应一天中特定的小时,确保每天在那个特定的时间运行。
有没有人知道有什么方法可以让我使用像“每小时的整点”或者“每天的00:00, 01:00, ... 23:00”这样的时间安排?
4 个回答
1
文档上说你最多可以设置20个定时任务,所以不能为一天的每个小时都设置一个。
你可以每分钟运行一次你的任务,然后检查一下现在是不是这个小时的第一分钟,如果不是就退出。
4
很遗憾,cron的语法不允许你设置一天内的具体时间间隔。不过,你可以使用任务队列来解决这个问题。你可以选择以下两种方法:
- 创建一个任务队列的条目,当这个任务运行时,它会添加一个新的任务,并设置'倒计时'为你希望下次运行的秒数。
- 设置一个每天运行的cron任务,在你希望运行的每个时间点添加24个每小时的任务队列条目。
5
你可以这样做,虽然可能不完全在整点,但会很接近...
(这个例子来自我在调试的一个应用程序)
cron:
- description: Description of what you want done...
url: /script/path/goes/here
schedule: every 60 minutes synchronized
timezone: America/New_York
下面是日志的截图,现在这个应用没有任何流量,99%的记录都是定时任务的记录。
--- 编辑 ---
我刚刚重新阅读了一下文档,也许这样做会更好,
schedule: every 60 minutes from 00:00 to 23:59