我有一个[python] AppEngine应用程序,可以创建多个任务并将它们添加到自定义任务队列中。 dev_appserver.py似乎忽略了我在queue.yaml中指定的速率/调度参数,并立即执行所有任务。这是一个问题[至少用于开发/测试目的]因为我的任务调用了速率限制的URL;立即执行所有任务都会违反限制限制并返回一堆错误。
有人知道dev_appserver.py被禁用的任务调度吗?我在AppEngine文档中找不到任何暗示这一点的内容。有人可以建议解决方法吗?
谢谢。
答案 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