错误:App Engine上的运行时进程端口['']错误

时间:2013-09-04 01:01:12

标签: python google-app-engine web-applications

我正在使用GAE和webapp2开发一个网站。在运行我的开发服务器时偶尔会出现以下错误,没有堆栈跟踪:

http_runtime.py:404] bad runtime process port ['']

有时当我更改部分数据库模式(它仍处于开发早期阶段)时会发生这种情况,如果我重新启动服务器并清除数据存储区,问题就解决了。但有时它似乎没有理由发生。

解决方案总是只是重新启动服务器,但我不知道为什么我会收到此错误。这是在服务器启动时间过长时才发生的事情吗?我能做些什么来阻止它吗?这是否发生在生产中?在开始考虑部署之前,我想知道。

3 个答案:

答案 0 :(得分:2)

虽然我不确定确切的机制,但从日志跟踪和查看http_runtime.py,我相信goapp和devappserver通过stdin和stdout进行通信,可能使用类似管道的机制。 http_runtime :: start()解析args以获取用于运行服务器的端口。如果args中的任何字符串包含{port},它将用所选端口替换该子字符串。这允许用户指定的运行时将端口作为命令行参数传递给子进程。

在init()中使用fmt.PrintXXX()似乎通过修改Stdout的内容来解决这个问题。第391行抛出了这个特殊错误,这是由于http_runtime在尝试将port参数转换为int时获得了ValueError异常。

请检查您是否在init中使用fmt.PrintXXX()。请切换到写入stderr,或者更好地使用日志界面。这对我有用。

您可以查看此google群组链接(https://groups.google.com/forum/#!topic/google-appengine-go/v_6-qY0-dD8)了解详情。

答案 1 :(得分:1)

作为参考,错误来自这行代码:

https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/http_runtime.py

它位于start()函数中,所以可能是因为某些东西导致你的dev_app_server重新启动并且它正在尝试重用一个不再可用的端口?

您是否可以尝试使用devappserver启用调试,看看是否可以重现它并粘贴到上下文中?

dev_appserver.py --dev_appserver_log_level=debug将日志输出设置为调试级别。

来自dev_appserver.py --help

答案 2 :(得分:0)

今天发生在我身上。错误是一致的,即重启没有帮助。

就我而言,问题似乎与virtualenv有关。我所做的事情的本质是:

#In myproject/src/main which is the GAE project folder
virtualenv venv
source venv/bin/activate
pip install lxml
cd ../..
dev_appserver src/main

请注意,GAE根位于src / main中,但我是从“祖父目录”运行的,这是我的git存储库根目录。

当在祖父目录中设置相同的virtualenv时,问题就消失了。即。

#In myproject/ which is my git repository root
virtualenv venv
source venv/bin/activate
pip install lxml
dev_appserver src/main

我不知道为什么会有所作为。