Python 如何为每个用户维护一个类实例';在烧瓶里的会话?

Python 如何为每个用户维护一个类实例';在烧瓶里的会话?,python,class,flask,Python,Class,Flask,我目前正在构建一个基于Flask框架的web应用程序,在将来应用程序完成后,它将拥有大约10个用户帐户 这个应用程序中构建并使用了一个具有重模块(计算密集型)的类,它是常用的关键功能之一,我遇到了一些问题,正在寻找一些解决方案(在文件a.py中将其命名为Class a) 最初,我将A类直接导入到视图文件中,并为其创建了一个路由函数,一旦用户单击调用该路由的按钮,路由函数将创建A类的实例,这个实例基于接收到的数据(比如Json)运行。但我发现系统可能会变慢,因为当用户频繁使用该功能时,Class

我目前正在构建一个基于Flask框架的web应用程序,在将来应用程序完成后,它将拥有大约10个用户帐户

这个应用程序中构建并使用了一个具有重模块(计算密集型)的类,它是常用的关键功能之一,我遇到了一些问题,正在寻找一些解决方案(在文件
a.py
中将其命名为
Class a

最初,我将
A类
直接导入到
视图
文件中,并为其创建了一个
路由
函数,一旦用户单击调用该
路由
的按钮,
路由
函数将创建
A类
的实例,这个实例基于接收到的数据(比如Json)运行。但我发现系统可能会变慢,因为当用户频繁使用该功能时,
Class A
的实例每次都必须创建(也可能有10个用户),而且
Class A
太重,无法反复创建

因此,我在想,我是否可以只创建一次
Class A
的实例(例如,Flask应用程序启动的时间),并且每个登录用户都可以访问该实例,而不是一次又一次地创建它


提前感谢

Flask具有扩展功能,可以在启动时进行设置,完全符合您的需要。 文件如下:

您可能可以忽略关于diskutils等的整个第一部分,跳转到“初始化扩展”

我们使用了这个精确的扩展点来实现这个目的,并且它应该能够正常工作


您也可以在类中使用单例模式,但扩展点与flask生态系统的其余部分配合得很好。

flask请求是无状态的,因此要跨请求为用户保留数据,选项是有限的。以下是一些想法:

  • 序列化类实例,将其存储在flask会话中(只是浏览器会话cookie的包装器),稍后检索

  • 将其存储在数据库中,以后需要时检索

  • Pickle它,使用用户名转储它,在需要时检索

  • 或者,根据应用程序的不同,缓存解决方案可能足够好(ig) 烧瓶缓存)。路由/视图将在第一次调用该类时实例化该类并返回一个值


    如果使用相同的参数/数据再次调用视图,则返回上一个返回值,而无需再次运行view函数

    谢谢你的回复!但我的意图不是保留数据,而是创建一些“全局实例”,允许用户全局调用它。如果我创建某种
    meta
    类,使用class属性作为缓存,例如
    meta.a_instance=a()
    ,然后跨
    视图
    文件导入该类,您认为这是一种好方法吗?(就像在class
    Meta
    下创建一个全局可访问的命名空间)请参见flask扩展,它们正是用于此目的的。您可以实例化视图文件的类模块级别,并在视图函数中引用它