Использование сеанса Flask в Gevent Socket-IO

Доброе утро,

У меня были некоторые проблемы, и я надеюсь, что кто-нибудь сможет мне здесь немного помочь. Я пытаюсь получить доступ к сеансу Flask в пространстве имен Gevent Socket-IO.

Я пытался использовать beaker в качестве клиента промежуточного программного обеспечения, и все еще не могу получить доступ и обновить информацию о сеансе из пространства имен socket-io.

Я довольно новичок во всем этом, поэтому любая помощь будет принята с благодарностью.

1 ответ

При использовании сеанса Flask по умолчанию представляется возможным совместно использовать (с доступом только для чтения) данные сеанса во время инициализации пространства имен.

session_dict=dict(session)
socketio_manage(request.environ, {'/news': NewsNamespace}, request=session_dict)

session_dict затем доступен как self.request в пространстве имен. Это хак, но сеансы Flask/werkzeug, похоже, все равно не работают вне контекста запроса.

Я поместил идентификатор сессии (случайно сгенерированный uuid) в сеанс Flask. Затем оба представления Flask и пространство имен знают идентификатор сеанса, и оба могут читать / записывать данные в сеансе на стороне сервера в Redis или каком-либо другом хранилище данных, используя идентификатор сеанса в качестве ключа.

Это просто решение, которое я использую для обмена сессиями между Flask и gevent-socketio; Я не пробовал Beaker и не уверен, какие конкретно проблемы у вас были при использовании, или есть ли лучшее решение.

Другие вопросы по тегам