python - 无法在 View 函数中的 2 个 flask 请求之间共享变量

标签 python flask global

我想要的是在 2 个 flask 请求之间共享一个变量! 该变量是一个 Pandas 数据框。

我已阅读 this answer我需要使用 flask global 中的 g ! 基本上,我有 2 个这样的 View 功能:

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'

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

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

Starting with Flask 0.10 this is stored on the application context and no longer on the request context which means it becomes available if only the application context is bound and not yet a request.

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

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

我应该改用 session 吗?

任何帮助将不胜感激

最佳答案

链接的答案似乎完全错误。 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'

关于python - 无法在 View 函数中的 2 个 flask 请求之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458322/

相关文章:

python - 具有多个参数的 Flask url_for()

javascript - 在服务器上处理单页应用程序前端和 API 后端的最佳方法

python-3.x - Docker 名称错误 : name 'app' is not defined

python - 为什么在 sympy 中使用无穷大 (oo) 比提供整数上限更快?

python - Nose 未发现 Django 中的包级测试

python - 参数函数求和

javascript - 每个 HTTP/Session 请求的 GLOBAL 数据?

php - 从函数 PHP 内部更改全局变量

c++ - 在 C 中声明两个同名的全局变量

python - 案例之间不支持“<” - 猜数字游戏