访问 flask-socketio 会话时遇到问题
Trouble with accessing flask-socketio session
当我 运行 使用 flask-socketio
我的本地应用程序时,我可以使用 from flask import session
访问 session,但是当我 运行它与 gunicorn 在服务器 (gunicorn --worker-class eventlet -w 1 app:app
) 上它 return 我 session.keys()
作为 Array[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)
我找到了解决办法。
会话消失了,无法共享到 socketio,因为我在 cloudflare 上为我的域添加了重定向页面规则。
当我将所有规则的转发类型更改为 302 - 临时一切正常时。
当我 运行 使用 flask-socketio
我的本地应用程序时,我可以使用 from flask import session
访问 session,但是当我 运行它与 gunicorn 在服务器 (gunicorn --worker-class eventlet -w 1 app:app
) 上它 return 我 session.keys()
作为 Array[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)
我找到了解决办法。 会话消失了,无法共享到 socketio,因为我在 cloudflare 上为我的域添加了重定向页面规则。 当我将所有规则的转发类型更改为 302 - 临时一切正常时。