Flask Google Cloud App Engine:OSError:[Errno 98]地址已在使用中

时间:2018-05-04 14:51:34

标签: python google-app-engine

我正在尝试在Google云应用引擎上部署一个烧瓶应用。它在我的本地虚拟环境中运行顺畅,但是我在云中运行它时遇到502错误。

现在我正在尝试在云服务器上调试我的代码,使用调试模式和SSH进入我的实例。使用docker exec -it [ID] /bin/bash我可以访问我的应用程序的根目录。现在我在运行python app.py时出现以下错误:

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
Traceback (most recent call last):
  File "app.py", line 479, in <module>
    app.run(port=8080)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 941, in run
    run_simple(host, port, self, **options)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 814, in run_simple
    inner()
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 774, in inner
    fd=fd)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 660, in make_server
    passthrough_errors, ssl_context, fd=fd)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 577, in __init__
    self.address_family), handler)
  File "/usr/local/lib/python3.6/socketserver.py", line 453, in __init__
    self.server_bind()
  File "/usr/local/lib/python3.6/http/server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/usr/local/lib/python3.6/socketserver.py", line 467, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use

我一直试图杀死我运行时列出的那些进程:

ps -fA | grep python

但是,这并未解决正在使用的地址问题。同时更改app.run()中的端口并不能解决我的问题。

3 个答案:

答案 0 :(得分:2)

我有一个类似的问题,这是由于在加载模块时Flask应用程序也正在运行引起的,因为我有

if __name__ == "__main__":
    app.run()

在底部。请注意,最近要求将服务器文件命名为“ main.py”可能会导致此错误出现。

答案 1 :(得分:1)

我认为问题在于您不需要为云端口专门化端口。 Google Cloud会找到自行运行您的应用的端口。因此,只需编写app.run(port=8080)

而不是app.run()

答案 2 :(得分:1)

虽然我无法弄清楚如何免费&#34;运行地址,我通过在不同的端口上运行它来启动另一个烧瓶过程来解决问题,如下所示:

flask run --port=80