在一段时间没有使用 App Engine 之后,我正在重新开始使用它。我正在使用 64 位 Linux Go 运行时版本 1.8.1。
我相信我正确地遵循了文档中的步骤,并且我相信我正在做过去正常工作的事情,但是我在尝试启动时遇到了这个错误dev_appserver.py:
$ dev_appserver.py 。
INFO 2013-07-11 07:24:45,919 sdk_update_checker.py:244] 检查 SDK 更新。
INFO 2013-07-11 07:24:46,230 sdk_update_checker.py:288] 此 SDK 版本比宣传的版本更新。
警告 2013-07-11 07:24:46,443 simple_search_stub.py:955] 无法从 /tmp/appengine.batterybotinfo.darshan/search_indexes 读取搜索索引
回溯(最近一次通话最后):
文件“/home/darshan/bin/dev_appserver.py”,第 182 行,在
_run_file(__file__, globals())
_run_file 中的文件“/home/darshan/bin/dev_appserver.py”,第 178 行
execfile(script_path, globals_)
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第 695 行,在
主要的()
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第 688 行,在 main
dev_server.start(选项)
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第 659 行,开始
apis.start()
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/api_server.py”,第 137 行,开始
超级(APIServer,自我).start()
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py”,第 295 行,开始
如果 self._start_all_dynamic_port(host_ports):
_start_all_dynamic_port 中的文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py”,第 348 行
server.start()
文件“/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py”,第 194 行,开始
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
TypeError: getaddrinfo() 参数 1 必须是字符串或无
我的第一个想法是我可能使用了不正确的 Python 版本。果然,我用的是 2.7.5,而且文档明确指出 2.5 是必须的。但是,文档似乎已经过时了,因为在安装 2.5 并将我的系统设置为使用它之后,我收到了这个错误:
错误:不支持 Python 2.5。请使用 2.7 版本。
好的,回到 2.7.5 和我最初的错误。
我不确定这是否是dev_appserver.pyPython 代码中的错误(我猜不是,因为它已经发布了一个月),我的 Python 安装问题,或者我的系统未根据配置的其他问题谷歌的期望。
除非必要,否则我宁愿不要乱用dev_appserver.py代码,但我很乐意戳它以帮助找出问题所在。错误在第 194 行;这是第 190-195 行:
# AF_INET or AF_INET6 socket
# Get the correct address family for our host (allows IPv6 addresses)
host, port = self.bind_addr
try:
info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
我已经确定包含方法被调用了两次。第一次host总是"127.0.0.1"而且port是0。第二次是崩溃的;host总是10(一个整数,而不是字符串),并且port是一个看似随机的五位整数。
我已经尝试对 or 进行硬编码host,但随后"127.0.0.1"又出现了另一个错误。我感到头晕目眩,我怀疑我不会通过改变我不太了解的事情来解决真正的问题。谷歌搜索错误消息没有帮助。port80800