Dar*_*tle 2 python google-app-engine go getaddrinfo dev-appserver
我没有在一段时间内使用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] Checking for updates to the SDK.
INFO     2013-07-11 07:24:46,230 sdk_update_checker.py:288] This SDK release is newer than the advertised release.
WARNING  2013-07-11 07:24:46,443 simple_search_stub.py:955] Could not read search indexes from /tmp/appengine.batterybotinfo.darshan/search_indexes
Traceback (most recent call last):
  File "/home/darshan/bin/dev_appserver.py", line 182, in 
    _run_file(__file__, globals())
  File "/home/darshan/bin/dev_appserver.py", line 178, in _run_file
    execfile(script_path, globals_)
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 695, in 
    main()
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 688, in main
    dev_server.start(options)
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 659, in start
    apis.start()
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 137, in start
    super(APIServer, self).start()
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 295, in start
    if self._start_all_dynamic_port(host_ports):
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 348, in _start_all_dynamic_port
    server.start()
  File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 194, in start
    socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
TypeError: getaddrinfo() argument 1 must be string or None
我的第一个想法是我可能正在使用不正确的Python版本.果然,我使用的是2.7.5,文档中明确指出2.5是必要的.但是,文档似乎已经过时了,因为在安装2.5并设置我的系统使用它之后,我收到了这个错误:
Error: Python 2.5 is not supported. Please use version 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(一个int,而不是一个字符串),并且port是一个看似随机的五位数int.
我试着硬编码host到"127.0.0.1"并port要么8080或者0,后来我得到另一个错误.我觉得我的头脑,我怀疑我不会通过改变我不理解的事情来解决真正的问题.谷歌搜索错误消息没有帮助.
持久的谷歌搜索终于得到了回报.尽管这个问题有一个非常不同的(以及更多信息)的错误信息,解决办法竟然是相同的:确保/etc/hosts只包含一个条目localhost.
值得注意的是,我的系统包含以下两行:
127.0.0.1  localhost
::1        localhost
评论第二个(并添加注释以记录原因)解决了我的问题:
127.0.0.1  localhost
# Having multiple localhost entries causes App Enginge dev_appserver.py to fail.
#  IPv6 not currently needed, and the dev server IS needed, so commenting out.
#::1        localhost
dev_appserver.py 现在开始并正常工作.
| 归档时间: | 
 | 
| 查看次数: | 10489 次 | 
| 最近记录: |