我已經使用了http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent/page/4中的以下示例代碼,並且在我使用測試服務器運行它時工作正常。 python myapp.py
我可以連接到它,併發送郵件Flask-SocketIO不能在Apache/WSGI上工作
from flask import Flask, render_template
from flask.ext.socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('my event', namespace='/test')
def test_message(message):
emit('my response', {'data': message['data']})
@socketio.on('my broadcast event', namespace='/test')
def test_message(message):
emit('my response', {'data': message['data']}, broadcast=True)
@socketio.on('connect', namespace='/test')
def test_connect():
emit('my response', {'data': 'Connected'})
@socketio.on('disconnect', namespace='/test')
def test_disconnect():
print('Client disconnected')
if __name__ == '__main__':
socketio.run(app)
問題是,當我提出這個相同的代碼到使用Apache的服務瓶,我得到錯誤的服務器。
RuntimeError: You need to use a gevent-socketio server.
爲Apache主機
配置文件是:
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias//var/www/public/flaskApp/flaskApp.wsgi
<Location /var/www/public/flaskApp/flaskApp/>
Order allow,deny
Allow from all
</Location>
是否可以運行SocketIO /瓶,並將它通過Apache的工作?
uwsgi無法使用此擴展,因爲它不允許使用自定義gevent循環。 Gunicorn確實有效,命令在文檔中。 – Miguel
感謝您的信息。 Gunicorn是我自己使用的。 – Celeo
@Miguel我認爲可能是這種情況。我確實閱讀過文檔,但看起來很奇怪,他們沒有辦法通過Apache代理通過Flask來處理socketio。 – user4143585