Python 在新的GAE模块中使用任务队列

Python 在新的GAE模块中使用任务队列,python,google-app-engine,module,task-queue,gae-module,Python,Google App Engine,Module,Task Queue,Gae Module,我有一个GAE应用程序,它有一个app.yaml,描述请求处理程序,并使用延迟扩展将任务放入推送队列,推送队列的目标也是我的应用程序中定义的后端 然而,我在GAE仪表板上看到通知说“您正在使用后端,您应该查看模块”。所以我研究了模块,我很难弄清楚如何将我的后端定义为一个模块。我的后端不需要任何显式定义的请求处理程序。它只处理队列中的任务。但是,当我为没有处理程序的后端创建模块yaml文件时,开发服务器会抱怨它是一个无效文件 我尝试使用backend_conversion.py文件,并将请求处理程

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

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

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

可以找到项目源,并且可以找到具有模块转换的分支


任何建议都将不胜感激。

您可以将指令
目标设置为
队列中的队列定义。yaml

- name: solver_queue
  ...
  target: solver_backend
并将参数
\u queue
添加到deferred.defer:

deferred.defer(function, param1, param2, _queue='solver_queue')
我的后端不需要任何显式定义的请求处理程序。它只处理队列中的任务

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

所以

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


这是一种正确的行为

您必须添加一个包含某些内容的处理程序部分-我想在模块存在之前,检查是有意义的,但现在不是这样了。谢谢您的提示。我已经在使用_queue参数,但我也在使用_target以defer调用中的solverbackend为目标。我更喜欢像你描述的那样在queue.yaml文件中设置它。当然,我想我可以理解为什么作为一个默认转换是有意义的。但是为什么我不能编辑该定义并删除处理程序而不出错呢?