Flask-Session не сохраняет данные сеанса с помощью Flask-SocketIOPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Flask-Session не сохраняет данные сеанса с помощью Flask-SocketIO

Сообщение Anonymous »

Я развертываю приложение Flask с помощью Gunicorn, используя Flask-Socketio и Flask-Session.
В событии «connect» я хочу сохранить идентификатор сеанса клиента на стороне сервера с помощью Flask -Сессия для идентификации клиента по будущему запросу. Проблема в том, что объект сеанса, предоставленный Flask, похоже, не сохраняет сохраненные данные. В приведенном ниже примере я сохраняю идентификатор сеанса клиента в событии «connect» с помощью session['sid'] = request.sid и пытаюсь выйти из него в событии «disconnect», используя session.get('sid '). Однако при этом будет отключен сохраненный идентификатор сеанса, а не значение по умолчанию.
Это также верно для http-запросов на маршрутах Flask.

Код: Выделить всё

def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
app.config['SESSION_TYPE'] = 'cachelib'
app.config['SESSION_FILE_DIR'] = FileSystemCache(cache_dir='sessions')

Session(app)
socketio = SocketIO(app, manage_session=False)

init_routes(app, socketio)
return app, socketio

Код: Выделить всё

    @socketio.on('connect')
def handle_connect():
session['sid'] = request.sid
print(f"Session ID: {session.get('sid')} connected")

@socketio.on('disconnect')
def handle_disconnect():
sid = session.get('sid')
print(f"Session ID: {sid} disconnected")
выход:

Код: Выделить всё

Session ID: AGDnl9e1mTkki6XAAAAB connected
server=127.0.0.1:8000//socket.io/ client=127.0.0.1:46222 socket shutdown error: [Errno 9] Bad file descriptor
Session ID: None disconnected
Для запуска сервера я использую следующий скрипт:

Код: Выделить всё

#!/bin/bash
#This script launches the Server.

if ! source .venv/bin/activate ; then exit 1 ; fi
gunicorn -w 1 -k eventlet app:app
exit $?
Что я уже пробовал:
  • Я пытался использовать другого работника, например gevent.
  • Я попробовал использовать flask-cors, добавив:

Код: Выделить всё

Session(app)
CORS(app)
socketio = SocketIO(app, manage_session=False)
  • Я пробовал использовать Manage_session=True, но это приводит к тому, что HTTP-запросы не могут получить доступ к данным сеанса.
  • Я пробовал использовать разные типы сеансов, например файловую систему.
  • Я пробовал очищать кеши, файлы cookie и локальные файлы сеансов.
  • Я пробовал использовать session.modified = True после сеанса['sid'] = request.sid


Подробнее здесь: https://stackoverflow.com/questions/792 ... k-socketio
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему Flask-SocketIO заканчивается сообщением «Ошибка недопустимого сеанса»?
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как в discord.py, flask-socketio и flask отправить файл на сервер из сокета прослушивания?
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Session.remove() в спящем режиме не удаляет объект, но я не могу его «session.get()»
    Anonymous » » в форуме JAVA
    0 Ответы
    87 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между session[""] и session.get("")?
    Anonymous » » в форуме Python
    0 Ответы
    97 Просмотры
    Последнее сообщение Anonymous
  • SQLAlchemy: session.close() или session.commit()
    Anonymous » » в форуме Python
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»