5

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

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

有时,当我更改部分数据库架构(它仍处于开发早期)时会发生这种情况,如果我重新启动服务器并清除数据存储区,问题就会得到解决。然而,有时它似乎无缘无故地发生。

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

4

3 回答 3

2

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

在 init() 中使用 fmt.PrintXXX() 似乎可以通过修改 Stdout 的内容来打破这一点。此特定错误在第 391 行引发,这是由于 http_runtime 在尝试将端口参数转换为 int 时收到 ValueError 异常。

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

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

于 2015-10-05T11:27:02.817 回答
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

于 2013-09-04T01:41:46.247 回答
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 时,问题就消失了。IE

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

我不知道为什么这会有所不同。

于 2015-02-26T14:28:57.123 回答