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

Esp*_*azi 2 python global flask

我想要在2个烧瓶请求之间共享一个变量!该变量是一个大熊猫数据框。

我在这个答案 中已经读到,我需要使用flask global中的 g !基本上,我有2视图功能是这样的:

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'
Run Code Online (Sandbox Code Playgroud)

但这总是返回失败,即:无

当我在这里阅读文档时,它说:

从Flask 0.10开始,它存储在应用程序上下文中,而不再存储在请求上下文中,这意味着只有绑定了应用程序上下文而不是请求时,它才可用

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

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

我应该改为使用会话吗?

任何帮助将不胜感激

Dan*_*man 5

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

为此,您需要会话

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'
Run Code Online (Sandbox Code Playgroud)

  • 为什么不呢? (2认同)
  • 原因是数据框不可JSON序列化。 (2认同)
  • @EspoirMurhabazi,您可以使用“df.to_dict()”和“df.to_json()”方法来序列化数据帧以跨会话使用。 (2认同)