访问flask-socketio会话时遇到麻烦

时间:2016-02-03 16:42:52

标签: python flask socket.io eventlet flask-socketio

当我使用flask-socketio运行本地应用程序时,我可以使用from flask import session访问会话,但是当我在服务器上使用 gunicorn 运行它时( gunicorn --worker-class eventlet -w 1 app:app)它将session.keys()作为数组[0] 返回给我。

如何修复它以在服务器上使用会话建立此本地代理?

由于

from flask import Flask, render_template, session, request
from flask_socketio import SocketIO, emit

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


@app.before_request
def before_request():
    session['key_1'] = 'Hello,'
    session['key_2'] = 'World'


@app.route('/')
def index():
    return render_template('index.html')


@socketio.on('connect', namespace='/')
def socket_connect():
    session_keys = session.keys()
    emit('connect response', {
        'session_keys': session_keys
    })


@socketio.on('disconnect', namespace='/')
def socket_disconnect():
    print('Client disconnected', request.sid)

if __name__ == '__main__':
    socketio.run(app)

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。 会话消失了,无法与socketio共享,因为我在cloudflare上为我的域添加了重定向页面规则。 当我将Forwarding类型的所有规则更改为302时 - 暂时一切运行良好。