代码之家  ›  专栏  ›  技术社区  ›  Espoir Murhabazi

无法在视图函数中的2个烧瓶请求之间共享变量[重复]

  •  3
  • Espoir Murhabazi  · 技术社区  · 8 年前

    我想要的是在两个flask请求之间共享一个变量! 变量是一个大熊猫数据帧。

    我已经读过了 this answer 我需要从中使用g flask global ! 基本上,我有两个视图功能,如下所示:

    from flask import g
    @home.route('/save', methods=['GET'])
    def save_ressource():
        an_object = {'key': 'value'}
        setattr(g, 'an_object', an_object)
        return 'sucees'
    @home.route('/read', methods=['GET'])
    def read_ressource():
        an_object = getattr(g, 'an_object', None)
        if an_object:
            return 'sucess'
        else:
            return 'failure'
    

    但这总是会导致失败,即:无

    当我读到这里的文档时,它说:

    从烧瓶0.10开始储存 应用程序上下文 和 不再在请求上下文中,这意味着 如果 仅绑定应用程序上下文 而且还不是一个请求。

    我的问题是如何解决这个问题?

    正如文档中所述,如何绑定应用程序上下文?

    我应该改用会话吗?

    任何帮助都将不胜感激

    1 回复  |  直到 5 年前
        1
  •  8
  •   ti7    6 年前

    链接的答案似乎完全错误。这个 g 对象用于将全局数据从一个函数存储到另一个函数 在同一请求中 ,并且根本不用于在请求之间共享数据。

    为此你需要 sessions :

    from flask import Flask, session
    
    @home.route('/save', methods=['GET'])
    def save_ressource():
        an_object = {'key': 'value'}
        session['an_object'] = an_object
        return 'sucees'
    
    @home.route('/read', methods=['GET'])
    def read_ressource():
        an_object = session.get('an_object')
        if an_object:
            return 'sucess'
        else:
            return 'failure'