Python 无法启动开发服务器--BindError:找不到一致的端口localhost
谷歌应用引擎开发服务器昨天运行得很好,但当我今天尝试启动它时。它只是大声说出了这个错误 我尝试使用Python 无法启动开发服务器--BindError:找不到一致的端口localhost,python,google-app-engine,Python,Google App Engine,谷歌应用引擎开发服务器昨天运行得很好,但当我今天尝试启动它时。它只是大声说出了这个错误 我尝试使用lsof-I:8080/lsof-I:8000来确保这些端口没有被占用。 我还尝试使用--port arg切换到另一个端口。 我甚至删除了gae文件夹并安装了一个新的。 --一点运气都没有 也许有一个明显的解决办法,但我看不出来 这是我的天啊跟踪堆栈 Traceback (most recent call last): File "/home/henry/software/google_appeng
lsof-I:8080
/lsof-I:8000
来确保这些端口没有被占用。
我还尝试使用--port arg切换到另一个端口。
我甚至删除了gae文件夹并安装了一个新的。
--一点运气都没有
也许有一个明显的解决办法,但我看不出来
这是我的天啊跟踪堆栈
Traceback (most recent call last):
File "/home/henry/software/google_appengine/dev_appserver.py", line 182, in <module>
_run_file(__file__, globals())
File "/home/henry/software/google_appengine/dev_appserver.py", line 178, in _run_file
execfile(script_path, globals_)
File "/home/henry/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 689, in <module>
main()
File "/home/henry/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 682, in main
dev_server.start(options)
File "/home/henry/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 653, in start
apis.start()
File "/home/henry/software/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 152, in start
super(APIServer, self).start()
File "/home/henry/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 294, in start
raise BindError('Unable to find a consistent port %s' % host)
google.appengine.tools.devappserver2.wsgi_server.BindError: Unable to find a consistent port localhost
Exception in thread Thread-4 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
File "/usr/lib/python2.7/threading.py", line 763, in runhenry@henry-A
回溯(最近一次呼叫最后一次):
文件“/home/henry/software/google_appengine/dev_appserver.py”,第182行,在
_运行\u文件(\uuuu文件,globals())
文件“/home/henry/software/google\u appengine/dev\u appserver.py”,第178行,在运行文件中
execfile(脚本路径,全局路径)
文件“/home/henry/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第689行,在
main()
文件“/home/henry/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第682行,主目录
dev_server.start(选项)
文件“/home/henry/software/google_-appengine/google/appengine/tools/devappserver2/devappserver2.py”,第653行,开头
api.start()
文件“/home/henry/software/google\u appengine/google/appengine/tools/devappserver2/api\u server.py”,第152行,在开始处
super(APIServer,self).start()
文件“/home/henry/software/google_-appengine/google/appengine/tools/devappserver2/wsgi_-server.py”,第294行,开头
raise BindError('找不到一致的端口%s'%1!''主机)
google.appengine.tools.devappserver2.wsgi_server.BindError:找不到一致的端口localhost
线程thread-4中出现异常(很可能在解释器关闭期间引发):
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/threading.py”,第810行,在引导程序内部
文件“/usr/lib/python2.7/threading.py”,第763行,在runhenry@henry-A
在尝试在不同的端口上运行,甚至使用不同的主机之前,我从未见过这样的情况:
dev_appserver.py /path/to/project --port 8888 --host 127.0.0.1
在其中为主机添加当前IP地址。这可能是由于主机文件中有多个“localhost”条目造成的 例如,在文件
/etc/hosts
中:
127.0.0.1 localhost
127.0.0.1 mymachinename localhost
如果删除除localhost的一个映射之外的所有映射,问题有望得到解决
127.0.0.1 mymachinename localhost
这是一个已知的问题,据我所知,它将在未来的版本中得到纠正。与发布的内容类似,我遇到了这个问题,并通过更改主机文件进行了修复。问题在于IPv6地址重定向到本地主机: 在我的主机文件中
127.0.0.1 localhost
::1 localhost
fe80::1%lo0 localhost
我注释掉了要给出的IPv6地址
127.0.0.1 localhost
#::1 localhost
#fe80::1%lo0 localhost
我不确定这是否是一个可行的永久解决方案,因为我认为将本地主机的IPv6数字地址包含在主机文件中很重要,但在发布正确的修复程序之前,它暂时有效。我通过将显式api端口传递到
dev_appserver.py
解决了这个问题:
dev_appserver.py path/to/project --api_port 3000
我无法通过编辑主机文件或将--port
/--host
传递到dev_appserver.py
来解决此问题
我没有找到根本原因。我想谷歌应用程序引擎中有一个bug。 我调试了appengine/tools/devappserver2/wsgi_server.py,以下是事实: 1.当互联网断开时,它运行正常 2.当互联网打开时,它会显示这样的错误
280 addrinfo = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
281 socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
在这段代码中,如果您连接internet,addrinfo将只在公共internet中拥有地址。甚至在命令行中分配端口和主机。那么您就没有机会将这个套接字绑定到localhost,因为您绑定的地址是您现在使用的公共地址
为了解决这个问题,我把代码改成
280 addrinfo = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
281 socket.SOCK_STREAM, 1, socket.AI_PASSIVE)
它现在工作得很好,我没有检查关于socket.getaddrinfo
的代码,但是,我假设它的功能是忽略查找地址,或者不是根据整数0或1
顺便说一句,我使用的是MacOs,也可能存在系统依赖性问题,如果是这种情况,那么套接字包应该重新设计
dev_appserver.py . --port 4000
这为我解决了问题。在我的情况下,重新启动终端工作。它工作了!我在我的主机中发现了一个重复的
127.0.0.1localhost
,因此在localhost上有两个映射。我删除了一个,dev服务器现在就可以运行了。重要!应该是单个条目解决您的问题bcz首先,我只删除了少数主题,但它不起作用,因此我删除了除一个127.0.0.1 localhost
之外的所有条目,它起作用。我在IPv6主机中只有::1 ip6 localhost ip6 loopback
,没有::1 localhost
。我只注释掉了fe80::1%lo0
行,dev_appserver.py更开心。