2013-04-23 52 views
1

今天我升级到GAE 1.7.7,发现任务队列在我的开发设置中停止工作。如何在代理后面使用GAE 1.7.7的任务队列

我在我的开发环境中通过一个nginx设置代理从fakedomain.local:80和fakedomain.local:443到localhost:8080(GAE侦听)的连接。

使用此设置,taskqueues最终被创建为在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)。

+0

我碰到一个类似的错误,当我试图测试我前端与我的GAE后端。你有没有找到解决方案? – 2013-06-01 07:38:29

+0

我没有找到官方解决方案,所以修补GAE是我能够正常工作的唯一方法。 AFAIK这可能与环境有关,因为我看到它发生在一些设置上,而不是其他设备上。还有一个我没有检查过的GAE的新版本,也许它在新的版本中是固定的...... – 2013-06-02 10:15:14

回答

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)

相关问题