2015-02-23 24 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

相关问题