Python 如何为每个用户维护一个类实例';在烧瓶里的会话?
我目前正在构建一个基于Flask框架的web应用程序,在将来应用程序完成后,它将拥有大约10个用户帐户 这个应用程序中构建并使用了一个具有重模块(计算密集型)的类,它是常用的关键功能之一,我遇到了一些问题,正在寻找一些解决方案(在文件Python 如何为每个用户维护一个类实例';在烧瓶里的会话?,python,class,flask,Python,Class,Flask,我目前正在构建一个基于Flask框架的web应用程序,在将来应用程序完成后,它将拥有大约10个用户帐户 这个应用程序中构建并使用了一个具有重模块(计算密集型)的类,它是常用的关键功能之一,我遇到了一些问题,正在寻找一些解决方案(在文件a.py中将其命名为Class a) 最初,我将A类直接导入到视图文件中,并为其创建了一个路由函数,一旦用户单击调用该路由的按钮,路由函数将创建A类的实例,这个实例基于接收到的数据(比如Json)运行。但我发现系统可能会变慢,因为当用户频繁使用该功能时,Class
a.py
中将其命名为Class a
)
最初,我将A类
直接导入到视图
文件中,并为其创建了一个路由
函数,一旦用户单击调用该路由
的按钮,路由
函数将创建A类
的实例,这个实例基于接收到的数据(比如Json)运行。但我发现系统可能会变慢,因为当用户频繁使用该功能时,Class A
的实例每次都必须创建(也可能有10个用户),而且Class A
太重,无法反复创建
因此,我在想,我是否可以只创建一次Class A
的实例(例如,Flask应用程序启动的时间),并且每个登录用户都可以访问该实例,而不是一次又一次地创建它
提前感谢Flask具有扩展功能,可以在启动时进行设置,完全符合您的需要。 文件如下: 您可能可以忽略关于diskutils等的整个第一部分,跳转到“初始化扩展” 我们使用了这个精确的扩展点来实现这个目的,并且它应该能够正常工作
您也可以在类中使用单例模式,但扩展点与flask生态系统的其余部分配合得很好。flask请求是无状态的,因此要跨请求为用户保留数据,选项是有限的。以下是一些想法:
如果使用相同的参数/数据再次调用视图,则返回上一个返回值,而无需再次运行view函数 谢谢你的回复!但我的意图不是保留数据,而是创建一些“全局实例”,允许用户全局调用它。如果我创建某种
meta
类,使用class属性作为缓存,例如meta.a_instance=a()
,然后跨视图
文件导入该类,您认为这是一种好方法吗?(就像在classMeta
下创建一个全局可访问的命名空间)请参见flask扩展,它们正是用于此目的的。您可以实例化视图文件的类模块级别,并在视图函数中引用它