[英]gunicorn cannot start flask
I cannot start flask by gunicorn. 我不能用金枪鱼来开瓶。 When I input "gunicorn run:app", the server gives me errors. 当我输入“ gunicorn run:app”时,服务器给我错误。 But I check that there is no service using 127.0.0.1:8000. 但是我检查是否没有使用127.0.0.1:8000的服务。 And I can use "python run.py" to run this application. 而且我可以使用“ python run.py”来运行该应用程序。
root@ip-172-31-18-230:/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'])
To use flask with gunicorn you dont have to run the app ( app.run()
) since it is a single blocking process which is used only for testing. 要将烧瓶与Gunicorn一起使用,您不必运行应用程序( app.run()
),因为它是一个单独的阻塞过程,仅用于测试。
Instead pass the flask app module that initiates the variable app
(if it is a single file, pass the filename) as argument to gunicorn instead of the external run.py. 而是将启动变量app
的flask应用程序模块(如果是单个文件,则传递文件名)作为参数传递给gunicorn,而不是外部run.py。
This is the right way to use gunicorn with flask. 这是将金枪鱼与烧瓶一起使用的正确方法。
gunicorn -b HOST:PORT <MODULE_NAME>:app
Replace MODULE_NAME with the correct module or file name. 将MODULE_NAME替换为正确的模块或文件名。 Use -b
flag to set the IP address and port number. 使用-b
标志设置IP地址和端口号。
This is what worked for me. 这对我有用。 Change your run.py file as follows 如下更改您的run.py文件
from app import app
if __name__ == "__main__":
app.run(debug=app.config['DEBUG'], port=app.config['PORT'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.