Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法启动开发服务器--BindError:找不到一致的端口localhost_Python_Google App Engine - Fatal编程技术网

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更开心。