【问题标题】:Using Flask Session in Gevent Socket-IO在 Gevent Socket-IO 中使用 Flask 会话
【发布时间】:2013-09-27 10:53:42
【问题描述】:

早安,

我遇到了一些麻烦,我希望有人能在这里帮助我。我想做的是在 Gevent Socket-IO 名称空间中访问 Flask 会话。

我尝试将烧杯用作中间件客户端,但我仍然无法从 socket-io 名称空间中访问和更新会话信息。

我对这一切都很陌生,所以任何帮助都将不胜感激。

【问题讨论】:

    标签: flask beaker gevent-socketio


    【解决方案1】:

    使用默认的 Flask 会话,似乎可以在初始化命名空间时共享(只读访问)会话数据。

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

    session_dict 然后可以在命名空间中作为self.request 访问。这是一个 hack,但 Flask/werkzeug 会话似乎无论如何都不能在请求上下文之外工作。

    我在 Flask 会话中放置了一个会话 ID(随机生成的 uuid)。然后,Flask 视图和命名空间都知道会话 ID,并且都可以在 Redis 或其他数据存储中的服务器端会话中读取/写入数据,会话 ID 作为键。

    这只是我用来在 Flask 和 gevent-socketio 之间共享会话的解决方案;我没有尝试过 Beaker,不确定您在使用它时遇到了哪些具体问题,或者是否有更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      相关资源
      最近更新 更多