2015-02-23 92 views
1

我正在嘗試使用uWSGI和gevent在SocketIO上運行Flask應用程序。使用帶有Flask和uWSGI的SocketIO時的請求塊大小無效

uwsgi --gevent 10 --socket :5000 --module run 

不過,我得到以下錯誤:

invalid request block size: 21573 (max 4096)...skip 

這是我的代碼:

from gevent import monkey 
monkey.patch_all() 

from flask import Flask, render_template, session, request 
from flask.ext.socketio import SocketIO, emit, disconnect 

app = Flask(__name__) 
app.config['SECRET_KEY'] = 'secret!' 
application = app 

socketio = SocketIO(app) 

@app.route('/') 
def index(): 
    session['user'] = '1' 
    return render_template('index.html', name='simon') 

@socketio.on('my event', namespace='/test') 
def test_message(message): 
    emit('my response', {'data': message['data']}) 

@socketio.on('connect', namespace='/test') 
def test_connect(): 
    emit('my response', {'data': 'Connected %s' % session['user']}) 

@socketio.on('disconnect', namespace='/test') 
def test_disconnect(): 
    print('Client disconnected') 

if __name__ == '__main__': 
    app.debug = True 
    socketio.run(app) 
+2

請將您的代碼添加到問題中,而不是圖片或鏈接。還要描述您所做的導致錯誤的請求。 – davidism 2015-02-23 17:49:26

回答

1

我的理解是,在uWSGI的GEVENT支持不允許自定義GEVENT服務器類將被使用,uWSGI提供它自己的。不幸的是,gevent-socketio需要自己的服務器,這個服務器是gevent的子類,所以我認爲目前使用uWSGI和Flask-SocketIO或者gevent-socketio是不可能的。

查看Flask-SocketIO documentation的替代品。

+0

謝謝您的明確解釋。那麼在我的Flask應用程序中只使用gevent模塊而不是Flask-SocketIO並使用代理nginx? – 2015-02-23 18:53:38

+0

這可能可行,但你需要自己處理套接字通信,聽起來像很多工作。更容易使用gunicorn + nginx。 – Miguel 2015-02-23 19:43:47