我目前正在构建一个基于 Flask 框架的 Web 应用程序,当应用程序完成时,将来会有大约 10 个用户帐户。
有一个具有重型模块(计算密集型)的类,在此应用程序中构建和使用,作为经常使用的关键功能之一,我遇到了一些问题并正在寻求一些解决方案(让我们将其命名为如文件 Class A
中的 a.py
)
最初,我导入了 Class A
直接进入view
之一文件,并创建了一个 route
函数,一旦用户单击调用此 route
的按钮,route
然后函数将创建 Class A
的实例,并且该实例基于接收到的数据(例如 Json)运行。但我发现系统会变慢,如 Class A
的实例当用户频繁使用该功能时,每次都必须创建(也可以有10个用户),并且Class A
太重了,无法一次又一次地创建。
因此我想我是否可以创建 Class A
的实例仅一次(例如,Flask 应用程序启动时),并且每个登录用户都可以访问该实例,而不是一遍又一遍地创建它?
提前致谢
最佳答案
Flask 请求是无状态的,因此为了跨请求为用户保留数据,选项是有限的。以下是一些想法:
序列化类实例,将其存储在 Flask session 中(只是浏览器 session cookie 的包装器),稍后检索。
将其存储在数据库中,稍后需要时检索
Pickle 它,使用用户名转储它,在需要时检索。
或者,根据应用程序,缓存解决方案可能足够好(ig Flask 缓存)。路由/ View 将在第一次调用时实例化该类并返回一个值。
如果使用相同的参数/数据再次调用 View ,则返回之前的返回值,而无需再次运行 View 函数。
关于python - 如何在 Flask 中为每个用户 session 维护一个类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48394464/