5

Google-app-engine 开发服务器昨天运行良好,但是当我今天尝试启动它时。它只会喊出这个错误。

我尝试使用lsof -i:8080/lsof -i:8000来确保不占用这些端口。我还尝试使用 --port arg 切换到另一个端口。我什至删除了 gae 文件夹并安装了一个新文件夹。——一点运气都没有。

也许有一个明显的解决方案,但我看不到。

这是 Oh-My-God 跟踪堆栈..

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
4

7 回答 7

6

这可能是由您的主机文件中的“localhost”的多个条目引起的。

例如在文件中/etc/hosts

127.0.0.1 localhost
127.0.0.1 mymachinename localhost

如果您删除除 localhost 之外的所有映射,则问题有望得到解决。

127.0.0.1 mymachinename localhost

这是一个已知问题,据我了解,它将在未来的版本中更正。

于 2013-05-22T19:09:22.287 回答
3

虽然在尝试在不同的端口上运行它甚至使用不同的主机之前我从未见过:

dev_appserver.py /path/to/project --port 8888 --host 127.0.0.1

主机在哪里添加您当前的 IP 地址。

于 2013-05-22T10:44:55.243 回答
2

与发布的内容类似,我遇到了这个问题并通过更改主机文件来修复它。问题在于 IPv6 地址重定向到 localhost:

在我的主机文件中

127.0.0.1    localhost
::1          localhost 
fe80::1%lo0  localhost

我注释掉了要给出的 IPv6 地址

127.0.0.1     localhost
#::1          localhost 
#fe80::1%lo0  localhost

我不确定这是一个可行的永久解决方案,因为我认为将 localhost 的 IPv6 数字地址放在 hosts 文件中很重要,但它现在可以工作,直到发布适当的修复程序。

于 2013-05-22T22:07:50.563 回答
1
dev_appserver.py . --port 4000

this fixed it for me.

于 2014-05-01T18:12:21.187 回答
1

我想谷歌应用引擎中有一个错误。我调试了 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)

在这段代码中,如果您连接互联网,addrinfo 将只有公共互联网中的地址。即使您在命令行中分配端口和主机。那么你就没有机会将此套接字绑定到 localhost,因为你绑定的地址是你现在使用的公共地址。

为了解决它,我只是将代码更改为

280 addrinfo = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
281                                     socket.SOCK_STREAM, 1, socket.AI_PASSIVE)

它现在运行良好,我没有检查关于 的代码socket.getaddrinfo,但是,我认为它的功能是根据整数 0 或 1 忽略查找地址。

顺便说一句,我正在使用 MacOs,也可能存在系统依赖问题,如果是这种情况,那么套接字包应该以某种方式重新设计。

于 2013-06-28T05:29:53.480 回答
0

就我而言,只需重新启动终端即可。

于 2015-01-14T07:18:54.117 回答
0

我通过将显式 api 端口传递给解决了这个问题dev_appserver.py

dev_appserver.py path/to/project --api_port 3000

我无法通过编辑主机文件或将--port/传递--hostdev_appserver.py.

我没有确定根本原因。

于 2013-05-26T17:00:37.993 回答