我今天升级到GAE 1.7.7并发现任务队列停止了我的开发设置。
我在我的开发环境中使用https,通过nginx设置代理来自fakedomain.local:80和fakedomain.local:443到localhost:8080(GAE监听)的连接。
通过此设置,最终会创建任务队列以在fakedomain.local:80执行。这曾经起作用,因为请求将由nginx获取,但开发服务器的1.7.7版本似乎有一个端口注册表,除非端口已知(如果我理解google.appengine),它将不会提供请求。 tools.devappserver2.Dispatcher._resolve_target正确)。当然,GAE侦听端口8080,我的任务标记为在fakedomain.local上运行:80永远不会执行(GAE记录此错误:在队列中发送任务“task1”(Url:“...”)时发生错误...)。
我尝试修补dispatcher.py:577,因此当端口未知时,它不会引发ServerDoesNotExistError,而只会使用默认服务器。通过这个修改,我可以让任务队列再次运行,但我宁愿使用一个不涉及改变GAE代码的解决方案。
如何在版本1.7.7中使GAE注册端口80和443?或者,有没有办法可以为任务指定完整的目标URL? (即fakedomain.local:8080 / my_task,而不仅仅是/ mytask)。
答案 0 :(得分:0)
taskqueue.add(target=taskqueue.DEFAULT_APP_VERSION, ...)
将在您的默认应用上运行它,这应该完全符合您的要求。
taskqueue.DEFAULT_APP_VERSION
=>
app_identity.get_default_version_hostname()
=>
environ['DEFAULT_VERSION_HOSTNAME']
=>
'%s:%s' % (environ['SERVER_NAME'], server_port)