我有一个GAE应用程序,它有一个描述请求处理程序的app.yaml,并使用延迟扩展将任务放到推送队列中,该队列的目标是我的应用程序中定义的后端。
但是,我在GAE仪表板上看到通知说“你正在使用后端,你应该看看模块”。所以我查看了模块,我在确定如何将后端定义为模块时遇到了一些困难。我的后端不需要任何明确定义的请求处理程序。它只处理队列中的任务。但是当我为没有处理程序的后端创建模块yaml文件时,开发服务器会抱怨它是一个无效的文件。
我尝试使用backend_conversion.py文件,并将我的默认模块中的请求处理程序复制到我的后端模块中,这似乎有效,但感觉不对。
任何建议都将受到赞赏。
答案 0 :(得分:2)
您可以将指令target
设置为queue.yaml
中的队列定义:
- name: solver_queue
...
target: solver_backend
并将参数_queue
添加到deferred.defer:
deferred.defer(function, param1, param2, _queue='solver_queue')
答案 1 :(得分:0)
我的后端不需要任何明确定义的请求处理程序。它只处理队列中的任务。
您可能认为backend_conversion.py
错误的原因是因为它复制了您的处理程序,并且您觉得您的后端之前不需要处理程序。但是后端需要处理程序作为前端实例。你后端实际上做的是在后端实例上运行你的整个应用程序(由app.yaml
定义)。因此,您的前端实例和后端实例之前实际上共享相同的代码。
因此
backend_conversion.py文件并复制请求处理程序
是一种正确的行为。