使用gunicorn引发KeyError wsgi.websocket

时间:2013-09-18 11:39:45

标签: nginx flask wsgi gevent gunicorn

我不熟悉gunicorn和系统管理,并尝试将其部署在服务器上。

运行过程非常简单,我使用命令

完成
gunicorn -c gunicorn_config.py --bind 127.0.0.1:8000 -k gevent_wsgi --daemon wsgi:app

gunicorn_config.py

workers = 2
worker_class = 'socketio.sgunicorn.GeventSocketIOWorker'
transports = ['websockets', 'xhr-polling']
bind = '127.0.0.1:8000'
pidfile = '/tmp/gunicorn.pid'
debug = False
loglevel = 'info'
errorlog = '/tmp/gunicorn.log'
resource = "socket.io"

wsgi.py

import os.path as op
import werkzeug.serving
import gevent.monkey
gevent.monkey.patch_all()

from bakery import create_app, init_app

app = create_app(app_name='bakery')
app.config.from_object('config')
app.config.from_pyfile(op.join(op.realpath(op.dirname(__name__)), 'local.cfg'))
init_app(app)
from socketio.server import SocketIOServer
SocketIOServer(('0.0.0.0', 5000), app,
    resource="socket.io", policy_server=True,
    transports=['websocket', 'xhr-polling'],
    ).serve_forever()

nginx设置为在位置

中使用
proxy_pass http://localhost:8000

gunicorn成功运行但在应用程序上进行了几次操作之后,它与KeyError“wsgi.websocket”崩溃了。似乎运输websocket还不够,但我不确定。

2 个答案:

答案 0 :(得分:1)

我有这个问题;需要将nginx配置为代理Web套接字:http://nginx.org/en/docs/http/websocket.html

答案 1 :(得分:0)

使用多个gunicorn工作人员时可能会出现问题,请参阅:https://github.com/abourget/gevent-socketio/issues/132

尝试将工人数量设置为1,以确定是否确实如此。