【发布时间】:2015-09-22 19:42:26
【问题描述】:
我有一个网络应用程序,它从数据库中检索数据并将其显示在 UI 上。我有一个名为 table 的类,它根据 URL 变量处理数据库请求。
我的问题是:当请求一个新的 URL 时,flask 会回收对象吗?还是在用户注销之前将对象保留在内存中?
我是否应该有一个表对象,并且每次 URL 更改时都更新查询?还是我应该创建一个新对象?
【问题讨论】:
标签: python-3.x flask
我有一个网络应用程序,它从数据库中检索数据并将其显示在 UI 上。我有一个名为 table 的类,它根据 URL 变量处理数据库请求。
我的问题是:当请求一个新的 URL 时,flask 会回收对象吗?还是在用户注销之前将对象保留在内存中?
我是否应该有一个表对象,并且每次 URL 更改时都更新查询?还是我应该创建一个新对象?
【问题讨论】:
标签: python-3.x flask
简短回答:取决于初始化类的时间和地点。
对象与用户登录和注销几乎没有关系。对象的生命周期取决于它们被初始化的时间和地点。
在函数或类之外初始化的对象实际上是单例对象,只要应用程序实例存在就一直存在
在类中初始化的对象的持续时间与原始对象的持续时间一样长。
在函数内部初始化的对象一直存在,直到函数完成执行。
现在处理数据库请求的类最好保存为单例。这避免了每次必须执行查询时都需要创建新的数据库连接。因此,创建单例的最简单方法是将其声明为函数或类之外的模块中的变量
【讨论】: