I ran into a strange problem (again) when I tried to start Google App Engine development server:


Traceback (most recent call last):
File "google_appengine/dev_appserver.py", line 197, in <module>
_run_file(__file__, globals())
File "google_appengine/dev_appserver.py", line 193, in _run_file
execfile(script_path, globals_)
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 872, in <module>
main()
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 865, in main
dev_server.start(options)
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 692, in start
apis.start()
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 137, in start
super(APIServer, self).start()
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 314, in start
if self._start_all_dynamic_port(host_ports):
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 367, in _start_all_dynamic_port
server.start()
File "/home/livibetter/p/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 213, in start
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
TypeError: getaddrinfo() argument 1 must be string or None
Exception in thread Thread-4 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 808, in __bootstrap_inner
File "/usr/lib64/python2.7/threading.py", line 761, in run
File "/home/livibetter/p/google_appengine/google/appengine/api/taskqueue/taskqueue_stub.py", line 2014, in MainLoop
File "/home/livibetter/p/google_appengine/google/appengine/api/taskqueue/taskqueue_stub.py", line 2006, in _Wait
File "/usr/lib64/python2.7/threading.py", line 618, in wait
File "/usr/lib64/python2.7/threading.py", line 354, in wait
<type 'exceptions.TypeError'>: 'NoneType' object is not callable

The key error message is:


TypeError: getaddrinfo() argument 1 must be string or None

It turned out is an IPv6 entry in /etc/hosts:


::1 localhost

My system has only been configured with IPv4 capability, so the entry somehow slips in (into Python) and causes confusion, after commented out that entry, everything runs fine.

Actually, I made a workaround eight months ago, now it’s resolved correctly. Didn’t even realize that it had something to do with /etc/hosts at the time.