应用程序无法在GAE上运行 - “无法绑定到localhost:0”

时间:2013-04-13 06:50:38

标签: python google-app-engine

我最近将Google App Engine升级到1.7.7。并且从那时起就无法在本地运行任何应用程序。这包括在更新之前工作的应用程序以及我之后创建的应用程序。我没有遇到任何其他对这个特定问题的引用“无法绑定到localhost:0”,因此任何有关清除此障碍的见解都将非常感激。

我在今天添加了一个新的“Hello World”应用程序的日志。在OS X 10.6.8上通过ActivePython使用Python 2.7。

*** Running dev_appserver with the following flags:
    --skip_sdk_update_check=yes --port=12084 --admin_port=8007
Python command: /usr/local/bin/pythonw
INFO     2013-04-13 06:37:31,627 devappserver2.py:498] Skipping SDK update check.
WARNING  2013-04-13 06:37:31,691 api_server.py:328] Could not initialize images API; you are likely missing the Python "PIL" module.
WARNING  2013-04-13 06:37:31,692 simple_search_stub.py:977] Could not read search indexes from /var/folders/ag/ag25hkLMFEG1p0pLBBX5Mk+++TI/-Tmp-/appengine.binderror.b/search_indexes
Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py", line 193, in <module>
    _run_file(__file__, globals())
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py", line 189, in _run_file
    execfile(script_path, globals_)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 662, in <module>
    main()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 655, in main
    dev_server.start(options)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 626, in start
    apis.start()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 151, in start
    super(APIServer, self).start()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 296, in start
    raise BindError('Unable to bind %s:%s' % self.bind_addr)
google.appengine.tools.devappserver2.wsgi_server.BindError: Unable to bind localhost:0

更新:我能够通过GAE Launcher部署“Hello World”应用,没有任何问题。我运行了errinfo -c -n GoogleAppEngineLauncher.app命令,它使用了包含的dtrace,然后尝试运行三个应用程序,然后关闭它们。这是输出[有点超出我]:

           EXEC          SYSCALL  ERR  COUNT  DESC
 GoogleAppEngine          madvise   12      1  Cannot allocate memory 
 GoogleAppEngine __disable_threadsignal    0      2 
 GoogleAppEngine           access    0      3 
 GoogleAppEngine bsdthread_register   22      3  Invalid argument 
 GoogleAppEngine            chdir    0      3 
 GoogleAppEngine   close_nocancel    0      3 
 GoogleAppEngine   fcntl_nocancel    0      3 
 GoogleAppEngine             fork    0      3 
 GoogleAppEngine    getdtablesize    0      3 
 GoogleAppEngine           getpid    0      3 
 GoogleAppEngine    open_nocancel    0      3 
 GoogleAppEngine           setsid    0      3 
 GoogleAppEngine      sigprocmask    0      3 
 GoogleAppEngine           stat64    0      3 
 GoogleAppEngine            wait4    0      3 
 GoogleAppEngine       workq_open    0      3 
 GoogleAppEngine            write    0      3 
 GoogleAppEngine          lstat64    0      4 
 GoogleAppEngine             pipe    0      6 
 GoogleAppEngine    thread_selfid    0      6 
 GoogleAppEngine     gettimeofday    0      7 
 GoogleAppEngine             dup2    0      9 
 GoogleAppEngine          madvise    0     17 
 GoogleAppEngine           munmap    0     31 
 GoogleAppEngine             mmap    0     33 
 GoogleAppEngine        sigaction    0     87 
 GoogleAppEngine      getattrlist    0    102 
 GoogleAppEngine          fstat64    0    118 
 GoogleAppEngine             open    0    118 
 GoogleAppEngine          geteuid    0    208 
 GoogleAppEngine              dup    0  10418 
 GoogleAppEngine             read    0  10532 
 GoogleAppEngine            close    0  10584 
 GoogleAppEngine workq_kernreturn    0  20752 
 GoogleAppEngine            close    9  21459  Bad file descriptor 
 GoogleAppEngine           kevent    0  72543 

8月16日更新2:我安装了最新版本的GAE Launcher [1.8.3],现在一切正常。

7 个答案:

答案 0 :(得分:32)

对于在Unknown key运行时获得fuser -k 8080/tcp的人,这里有一个对我有用的解决方案:

lsof -P | grep ':8080' | awk '{print $2}' | xargs kill -9

答案 1 :(得分:18)

您的套接字已在使用中。杀死它,它应该被解决。fuser -k 8080/tcp

例如,上面的代码在8080

处杀死并释放套接字

答案 2 :(得分:5)

在另一个端口测试它,在启动服务器时添加--port NUMBER。

答案 3 :(得分:4)

由于未知选项,

fuser -k命令对我不起作用,而是我这样做了。

通过“sudo lsof -i -n -P | grep TCP”查看哪个进程正在使用该端口。我注意到进程ID并通过Activity Monitor(在“网络”选项卡中)退出。

答案 4 :(得分:1)

有同样的问题,实际上是在尝试使用GUI运行服务器。在GUI中停止它,完美运行。

答案 5 :(得分:1)

Ubuntu 14.04有一个名为&#34; webfs&#34;的轻量级服务器。在localhost上听:8000。运行 - sudo netstat -taupen | grep&#34;:8000&#34; - 在终端确认。如果它的监听运行 - sudo killall -q / usr / bin / webfsd - 将其杀死。 GAE使用端口8000和8080,如果其中一个或两个都忙,则不会启动。 反思时,webfs守护程序也可以作为服务打开和关闭:sudo service webfs start / stop。但是,由于这两种方法都需要root权限,因此它们不易自动化。 当我从命令行本地启动appengine时,只需在启动时将管理端口从8000更改为8001,这是一种更为深思熟虑的方法。我的命令行如下:google_appengine / dev_appserver.py --admin_port 8001 projects / helloworld /

答案 6 :(得分:1)

您上次运行app engine命令时,请使用ctrl-z关闭它(分流到背景)而不是ctrl-c(kill)。重新启动终端,下次关闭终端使用ctrl-c的应用引擎时,您就可以了。