1

我今天升级到 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 代码的解决方案。

如何让 GAE 在 1.7.7 版本中注册 80 和 443 端口?或者,有没有办法可以为任务指定完整的目标 URL?(即 fakedomain.local:8080/my_task,而不仅仅是 /mytask)。

4

1 回答 1

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)

于 2016-12-15T16:15:30.613 回答