Использование сеанса 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 и не уверен, какие конкретно проблемы у вас были при использовании, или есть ли лучшее решение.