Google app engine 任务队列不存在';t运行我的所有任务--应用程序引擎后端

Google app engine 任务队列不存在';t运行我的所有任务--应用程序引擎后端,google-app-engine,task-queue,Google App Engine,Task Queue,我有一个应用程序在后端实例上运行。它有11项任务。第一个由/_ah/start启动,然后依次启动其他十个工作任务。辅助任务具有以下结构: done = False while not done: do_important_stuff() time.sleep (30) if a_long_time_has_passed(): done = True appengine上的执行行为每次都是相同的。调度任务运行10个辅助任务并使其排队。前七个辅助任务开始运行

我有一个应用程序在后端实例上运行。它有11项任务。第一个由/_ah/start启动,然后依次启动其他十个工作任务。辅助任务具有以下结构:

done = False
while not done:
    do_important_stuff()
    time.sleep (30)
    if a_long_time_has_passed():
        done = True
appengine上的执行行为每次都是相同的。调度任务运行10个辅助任务并使其排队。前七个辅助任务开始运行并正确执行。最后三个坐在队列中,从不跑。任务队列应用程序控制台显示队列中的所有十项任务,其中七项正在运行

该应用程序还停止响应HTTP请求,返回503个状态代码,日志中没有显示正在调用我的HTTP处理程序

工作任务队列的最大速率配置为1/s和2个存储桶。奇怪的是,管理控制台显示强制速率为0.1秒。由于任务永远运行,因此它们不会返回不成功的完成状态代码。cpu负载可以忽略不计。工作人员通常先提取URL,然后等待30秒再提取

这些日志没有帮助。我不知道该去哪里找到能帮我找到答案的诊断方法。我在一个免费的账户里测试。一次执行8个任务是否有限制?我在文档中没有看到类似的内容,但我已经没有想法了。最终,我想并行运行更多的任务


谢谢你给我的建议。

后端实例同时处理的请求数量是有限制的,听起来你已经达到了这个限制

备选方案包括:

  • 使用常规任务队列,而不是针对后端的任务队列
  • 启动多个后端实例
  • 使用线程从启动请求开始自己启动线程,而不是依赖任务队列来完成

请注意,如果您的任务是CPU受限的,那么在5、2甚至1个任务上运行其中10个任务不会给您带来任何额外的好处。

谢谢您的回复,Nick。限制8个同时请求可以解释我看到的行为,包括向我的实例发送http请求的客户端看到的503个。然而,我还没有找到任何关于这个主题的应用程序引擎文档。对于线程安全应用程序和挂起队列,只有对“并发请求”的引用。我有很多空闲的CPU周期。如果我要有效地使用实例,那么看起来我将不得不使用线程。回到绘图板。并发运行的线程数量多少取决于调度程序-即使我们给出了一个可靠的限制,您也不能保证会达到该限制,因为在那之前您可能会使CPU饱和。在任何情况下,如果希望在实例上运行固定数量的线程,线程是一个更好的解决方案。你在做什么,需要这么多并发线程,但不占用太多CPU?URL获取我登录到一个帐户并定期检查新数据的许多不同页面。你在使用异步URL获取吗?