0

我有一个 GAE 应用程序,它有一个描述请求处理程序的 app.yaml,并使用延迟扩展将任务放到推送队列中,该队列也针对我的应用程序中定义的后端。

但是,我在 GAE 仪表板中看到通知说“您正在使用后端,您应该查看模块”。因此,我查看了模块,但在弄清楚如何将后端定义为模块时遇到了一些困难。我的后端不需要任何明确定义的请求处理程序。它只处理队列中的任务。但是当我为没有处理程序的后端创建模块 yaml 文件时,开发服务器抱怨它是一个无效文件。

我尝试使用 backend_conversion.py 文件并将请求处理程序从我的默认模块复制到我的后端模块中,这似乎可行,但感觉不对。

项目源可以在这里找到,带有模块转换的分支在这里

任何意见,将不胜感激。

4

2 回答 2

2

您可以将指令设置target为队列定义queue.yaml

- name: solver_queue
  ...
  target: solver_backend

并将参数添加_queue到 deferred.defer:

deferred.defer(function, param1, param2, _queue='solver_queue')
于 2014-01-11T20:36:39.537 回答
0

我的后端不需要任何明确定义的请求处理程序。它只处理队列中的任务。

您可能觉得backend_conversion.py不对的原因是因为它复制了您的处理程序,并且您觉得您的后端以前不需要处理程序。但是后端需要处理程序作为前端实例。您后端实际上所做的是app.yaml在后端实例上运行整个应用程序(由 定义)。因此,您的前端实例和后端实例实际上之前共享相同的代码。

所以

backend_conversion.py 文件,它复制了请求处理程序

是正确的行为。

于 2014-01-12T17:02:43.647 回答