AppEngine dev_appserver.py中的任务调度

时间:2011-02-13 11:18:14

标签: python google-app-engine

我有一个[python] AppEngine应用程序,可以创建多个任务并将它们添加到自定义任务队列中。 dev_appserver.py似乎忽略了我在queue.yaml中指定的速率/调度参数,并立即执行所有任务。这是一个问题[至少用于开发/测试目的]因为我的任务调用了速率限制的URL;立即执行所有任务都会违反限制限制并返回一堆错误。

有人知道dev_appserver.py被禁用的任务调度吗?我在AppEngine文档中找不到任何暗示这一点的内容。有人可以建议解决方法吗?

谢谢。

3 个答案:

答案 0 :(得分:4)

当您的应用在开发服务器中运行时,任务会在适当的时间自动执行,就像在生产中一样
您可以从开发人员控制台检查和操作任务: http://localhost:8080/_ah/admin/taskqueue

文档here

答案 1 :(得分:1)

The documentation谎言:开发服务器似乎不支持速率限制。 (这是Java开发服务器的is documented,但不适用于Python)。你可以通过给它一个0 / s速率暂停一个队列来证明这一点,但你会发现它仍然执行任务。当这样的应用程序上传到生产时,它的行为符合预期。

我打开了defect

答案 2 :(得分:0)

Rate参数不用于设置TaskQueue处理的绝对上限。事实上,如果您使用例如:

rate: 10/s
bucket_size: 20

处理可以突然达到20 / s。更有用的是:

max_concurrent_requests: 1

将最大执行次数设置为1次。

但是,这不会阻止任务执行。如果您一次添加多个任务但知道它们需要稍后执行,则应该使用倒计时

_countdown using deferred library
countdown using Task class