我目前正在构建一个基于Flask Framework构建的Web应用程序,将来应用程序完成后将有大约10个用户帐户。
在这个应用程序中构建和使用了一个具有大量模块(计算密集型)的类,作为常用的关键功能之一,我遇到了一些问题,我正在寻找一些解决方案(让&#39 ; s将其命名为Class A
中的a.py
}
最初,我将Class A
直接导入其中一个view
文件,并为其创建了一个route
函数,一旦用户点击调用此{{1}的按钮然后,route
函数将创建route
的实例,并且此实例基于接收的数据(如Json)运行。但我发现系统可能会变慢,因为当用户经常使用该功能时,每次都必须创建Class A
的实例(也可能有10个用户),Class A
也是如此沉重的一次又一次地创造。
因此我认为无论如何我只能创建Class A
的实例一次(例如,Flask应用程序启动的时间),并且每个登录用户都可以访问此实例而不是创建它一遍又一遍?
提前致谢
答案 0 :(得分:1)
Flask Requests是无状态的,因此为了跨请求保留用户的数据,选项是有限的。以下是一些想法:
序列化类实例,将其存储在烧瓶会话中(只是浏览器会话cookie的包装器),稍后检索。
将其存储在数据库中,以后需要时检索
腌制它,使用用户名转储它,在需要时检索。
或者,根据应用程序,缓存解决方案可能足够好(ig 瓶缓存)。路径/视图将在第一次调用时实例化该类并返回一个值。
如果使用相同的参数/数据再次调用视图,则返回先前的返回值,而不再运行视图函数。
答案 1 :(得分:0)
Flask有扩展,可以在启动时设置,完全符合您的需要。 文档在这里:http://flask.pocoo.org/docs/0.12/extensiondev/
您可以忽略有关diskutils等的整个第一部分,并跳转到"初始化扩展"。
我们为此目的使用了这个确切的扩展点,它应该可以正常工作。
您也可以在班级中使用单身模式,但扩展点适用于烧瓶生态系统的其余部分。