2017-02-19 65 views
3

我试图用Gunicorn运行我的应用程序。然而,当Gunicorn开始时,Flask提高OSError: [Errno 98] Address already in use,然后Gunicorn关闭。如何与Gunicorn一起提供应用程序?烧瓶引发了与Gunicorn一起运行的`已在使用中的地址'

from flask import Flask 

app = Flask(__name__) 

@app.route('/') 
def index(): 
    return 'Hello, World!' 

app.run(debug=True) 
gunicorn app:app 
[2017-02-19 21:09:50 -0800] [21965] [INFO] Starting gunicorn 19.6.0 
[2017-02-19 21:09:50 -0800] [21965] [INFO] Listening at: http://127.0.0.1:8000 (21965) 
[2017-02-19 21:09:50 -0800] [21965] [INFO] Using worker: sync 
[2017-02-19 21:09:50 -0800] [21968] [INFO] Booting worker with pid: 21968 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
* Restarting with stat 
[2017-02-19 21:09:50 -0800] [21969] [ERROR] Exception in worker process 
Traceback (most recent call last): 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker 
    worker.init_process() 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process 
    self.load_wsgi() 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi 
    self.wsgi = self.app.wsgi() 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi 
    self.callable = self.load() 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load 
    return self.load_wsgiapp() 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app 
    __import__(module) 
    File "/home/david/Projects/py36/app.py", line 4, in <module> 
    app.run(debug=True) 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/flask/app.py", line 841, in run 
    run_simple(host, port, self, **options) 
    File "/home/david/.virtualenvs/py36/lib/python3.6/site-packages/werkzeug/serving.py", line 691, in run_simple 
    s.bind((hostname, port)) 
OSError: [Errno 98] Address already in use 

[2017-02-19 21:09:50 -0800] [21968] [INFO] Worker exiting (pid: 21968) 
[2017-02-19 21:09:50 -0800] [21965] [INFO] Shutting down: Master 
[2017-02-19 21:09:50 -0800] [21965] [INFO] Reason: Worker failed to boot. 

我试图gunicorn Connection in use for python flaskerror: [Errno 98] Address already in use但不能让它开始工作。

回答

3

您正在使用Gunicorn,因此您不想使用Flask dev服务器。但你无条件地致电app.run。 Gunicorn启动,绑定地址,然后导入您的应用程序,该应用程序调用app.run并尝试启动它自己的服务器。但该地址已被Gunicorn使用。

移动app.run成保护块:

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

或者优选地完全去除它,因为你应该使用flask命令运行开发服务器如在docs说明。