我正在使用 Google App Engine 任务推送队列来安排我希望在其预定时间的秒精度内发生的未来任务。
通常我会在 30 秒后安排一个任务,这会触发我系统中的状态更改,最后安排另一个未来的任务。
在我的本地开发服务器上一切正常。
但是,现在我已经部署到 GAE 服务器,我注意到计划任务运行较晚。我已经看到它们在预定后两分钟就开始运行了。
在任务队列管理控制台中,它实际上对 ETA 说:
ETA: "2013/11/02 22:25:14 0:01:38 ago"
Creation Time: "2013/11/02 22:24:44 0:02:08 ago"
为什么会这样?
我找不到任何有关 ETA 安排的任务的期望和精度的文档。
我正在用 python 编程,但我怀疑这有什么不同。\
在python代码中,eta参数记录如下:
eta: A datetime.datetime specifying the absolute time at which the task
should be executed. Must not be specified if 'countdown' is specified.
This may be timezone-aware or timezone-naive. If None, defaults to now.
我的队列设置:
queue:
- name: mgmt
rate: 30/s
系统处于空载状态,除了应该每 30 秒左右运行一次的 5 个任务。
更新:
我发现https://code.google.com/p/googleappengine/issues/detail?id=4901这是一个接受的及时队列功能请求,尽管似乎没有做任何事情。它接受这样一个事实,即使用 ETA 的任务可能会延迟很多分钟。
我可以使用哪些其他替代机制来安排具有第二精度的触发器?