2

私は、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' でクラッシュします。transport websocket では十分ではないようですが、よくわかりません。

4

2 に答える 2

1

この問題がありました。nginx は、Web ソケットをプロキシするように構成する必要があります: http://nginx.org/en/docs/http/websocket.html

于 2013-10-15T06:55:52.047 に答える
0

その理由は、複数の gunicorn ワーカーを使用する場合の問題である可能性があります。https ://github.com/abourget/gevent-socketio/issues/132 を参照してください。

ワーカーの数を 1 に設定して、実際にそうであるかどうかを確認してください。

于 2014-01-07T17:50:24.793 に答える