2016-05-11 3 views
0

ガンコーンでフラスコを始動できません。 「gunicorn run:app」と入力すると、サーバーからエラーが表示されます。しかし、127.0.0.1:8000を使用しているサービスがないことを確認します。そして、私はこのアプリケーションを実行するために "python run.py"を使うことができます。ガンコーンはフラスコを始動できません

[email protected]:/var/www/vamk.help/vamk# gunicorn run:app 
[2016-05-11 02:13:09 +0000] [20288] [INFO] Starting gunicorn 19.4.5 
[2016-05-11 02:13:09 +0000] [20288] [INFO] Listening at: http://127.0.0.1:8000 (                        20288) 
[2016-05-11 02:13:09 +0000] [20288] [INFO] Using worker: sync 
[2016-05-11 02:13:09 +0000] [20293] [INFO] Booting worker with pid: 20293 
[2016-05-11 02:13:10 +0000] [20293] [ERROR] Exception in worker process: 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, i                         n spawn_worker 
    worker.init_process() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 1                         22, in init_process 
    self.load_wsgi() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 1                         30, in load_wsgi 
    self.wsgi = self.app.wsgi() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, i                         n wsgi 
    self.callable = self.load() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65                         , in load 
    return self.load_wsgiapp() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52                         , in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in i                         mport_app 
    __import__(module) 
    File "/var/www/vamk.help/vamk/run.py", line 3, in <module> 
    app.run(threaded=True, debug=app.config['DEBUG'], port=app.config['PORT']) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 772, in run 
    run_simple(host, port, self, **options) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 677, i                         n run_simple 
    s.bind((hostname, port)) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 98] Address already in use 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, i                         n spawn_worker 
    worker.init_process() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 1                         22, in init_process 
    self.load_wsgi() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 1                         30, in load_wsgi 
    self.wsgi = self.app.wsgi() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, i                         n wsgi 
    self.callable = self.load() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65                         , in load 
    return self.load_wsgiapp() 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52                         , in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in i                         mport_app 
    __import__(module) 
    File "/var/www/vamk.help/vamk/run.py", line 3, in <module> 
    app.run(threaded=True, debug=app.config['DEBUG'], port=app.config['PORT']) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 772, in run 
    run_simple(host, port, self, **options) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 677, i                         n run_simple 
    s.bind((hostname, port)) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 98] Address already in use 

run.py

from app import app 

app.run(debug=app.config['DEBUG'], port=app.config['PORT']) 
+0

http://stackoverflow.com/questions/419163/what-does-if-name-main-do – davidism

答えて

3

あなたはそれが唯一のテストのために使用される単一のブロッキング・プロセスであるため、アプリ(app.run())を実行するために持っていけないgunicornでフラスコを使用します。

代わりに、変数app(単一のファイルの場合はファイル名を渡す)をフラスコアプリケーションモジュールに渡し、外部のrun.pyの代わりにgunicornに引数として渡します。

これはフラスコでガンコーンを使用する正しい方法です。

gunicorn -b HOST:PORT <MODULE_NAME>:app 

MODULE_NAMEを正しいモジュールまたはファイル名に置き換えます。 -bフラグを使用して、IPアドレスとポート番号を設定します。

関連する問題