【问题标题】:Google app engine cannot instantiate task queues more than the back end instances defined in backends.yaml in Google app engineGoogle 应用引擎无法实例化任务队列超过 Google 应用引擎中 backends.yaml 中定义的后端实例
【发布时间】:2012-10-12 03:54:02
【问题描述】:

我已经定义了后端配置如下。

 backends:
 - name: mybackend
   class: B8
   options: public, dynamic
   instances: 6

然后 Um 创建了超过 6 个任务队列实例并将目标提供给我的后端。

 class TestHandlerTest(RequestHandler):
    def get(self):
         for x in range(0, 100):
             taskqueue.add(url='/testhandler/', method='GET',      params={'x': x},
                        target='mybackend')
         return Response()


 class TestHandler(RequestHandler):
     def get(self):
         time.sleep(420)
         x = self.request.args.get('x')
         return Response()

在 GAE 任务队列中,只有 6 个任务队列实例排队。它不会运行到 100。如果我们使用前端,任务队列会排队 所有任务队列。

为什么我们不能排队超过谷歌应用引擎中指定的后端实例限制的任务?有人可以帮忙吗?

【问题讨论】:

    标签: python google-app-engine backend


    【解决方案1】:

    您已配置 6 个后端实例。您可以向这些后端添加任意数量的推送任务。 为此,您必须为添加的每个任务定位后端实例。 因此,第一个实例的 target = '1.mybackend' 和第二个后端 inatnce 的 '2.mybackend'。

    【讨论】:

    • 这不是我问的。嗯,使用一个后端,定义 6 个实例,并通过大于后端实例数的循环将 url 添加到任务队列中。它只添加了 6 个,其他人消失了
    • 好吧,我们正在动态处理后端,所以在循环内部,后端无论如何都会被实例化:)
    • 我不确定您是否可以在没有实例的情况下处理后端队列。因为当您不在目标中使用实例时,它会将任务添加到可用实例中。但是在六点之后,不再有任何实例“可用”。这有意义吗?因此,请尝试使用包含实例的目标后端。
    • 在循环中它可能会创建 6 个实例,而不必将实例创建为 1.instance_name 到 ... n.instance_name
    • 但问题可能是,添加六个任务后,不再有可用的实例。要添加更多任务,您必须使用实例。
    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多