提问者:小点点

在Python Flask中:什么是存储数据的合适位置?[副本]


根据中给出的答案,在烧瓶上存储每个请求的数据是否安全。要求似乎g对象是本地请求(=具有单个请求的生存期)。也许我误解了这个答案,但是Flask文档说明g对象是全局的,这似乎与这个答案相矛盾。

文档本身对这些细节的描述有点短,所以请您向上下文和全局对象g解释细节好吗?具体解决以下问题:

  1. 为了在单个请求的生命周期内存储数据,应该如何做?(使用request对象、g对象或哪种类型的对象?)

共1个答案

匿名用户

为了在单个请求的生命周期内存储数据,应该如何做到这一点?

g对象就是为此而设计的。文件规定:

Flask为您提供了一个特殊的对象,确保它仅对活动请求有效,并且将为每个请求返回不同的值。

虽然留档将g称为"global",但这并不准确-"thell-global"会更好。

为了在应用程序的生命周期内存储数据,应该如何做?

我认为这个问题的答案也比我更好地回答了这个问题:在烧瓶应用程序中保存全局状态

烧瓶可用于多工艺环境。假设在这种操作模式下会有多个应用程序范围的对象,这是否正确?(这意味着所有这些app或g对象都需要在每个工作进程的生命周期内单独初始化。)

在多进程环境中,每个请求都作为一个单独的线程处理,而g在每个请求的基础上被初始化和销毁,因此将有与线程一样多的并发g对象-尽管每个线程只能看到自己的线程。在大多数情况下,我怀疑应该只有一个app对象,一个由程序员创建的Flask()类的实例,即app=Flask(\uuu name\uuu)或类似的对象。

蓝图和应用程序调度是拥有“多个”应用程序对象的两种方式,只要您有多个应用程序同时运行。