AppEngine dev_appserver.py中的任务调度
我有一个用 [python] 写的 AppEngine 应用,它会创建多个任务并把这些任务添加到一个自定义的任务队列中。但是,dev_appserver.py 好像不管我在 queue.yaml 里设置的速率和调度参数,直接把所有任务都立即执行了。这对我来说是个问题,尤其是在开发和测试的时候,因为我的任务会调用一个有限制的 URL;如果所有任务都立刻执行,就会超过限制,导致我收到很多错误。
有没有人知道在 dev_appserver.py 中,任务调度是不是被禁用了?我在 AppEngine 的文档里找不到任何相关的信息。有没有人能提供一个解决办法?
谢谢。
3 个回答
0
速率参数并不是用来设置任务队列处理的绝对上限。实际上,如果你使用例如:
rate: 10/s
bucket_size: 20
那么处理速度可以瞬间达到20/s。更有用的设置是:
max_concurrent_requests: 1
这个设置会把同时执行的任务数量限制为1个。
不过,这并不会阻止任务的执行。如果你一次添加了多个任务,但知道它们需要在稍后的时间执行,那么你可能应该使用倒计时。
1
这段文档说错了:开发服务器似乎不支持速率限制。(对于Java开发服务器,这一点有说明,但Python的没有)。你可以通过把队列的速率设置为0来暂停它,但你会发现它还是会执行任务。当这样的应用程序上传到生产环境时,它的表现就正常了。
我提交了一个缺陷报告。
4
当你的应用在开发服务器上运行时,任务会在合适的时间自动执行,就像在正式环境中一样。
你可以通过开发者控制台查看和操作这些任务:http://localhost:8080/_ah/admin/taskqueue
文档可以在这里找到