【问题标题】:Lifetime of objects in a flask app烧瓶应用程序中对象的生命周期
【发布时间】:2015-09-22 19:42:26
【问题描述】:

我有一个网络应用程序,它从数据库中检索数据并将其显示在 UI 上。我有一个名为 table 的类,它根据 URL 变量处理数据库请求。

我的问题是:当请求一个新的 URL 时,flask 会回收对象吗?还是在用户注销之前将对象保留在内存中?

我是否应该有一个表对象,并且每次 URL 更改时都更新查询?还是我应该创建一个新对象?

【问题讨论】:

    标签: python-3.x flask


    【解决方案1】:

    简短回答:取决于初始化类的时间和地点。

    对象与用户登录和注销几乎没有关系。对象的生命周期取决于它们被初始化的时间和地点。

    1. 在函数或类之外初始化的对象实际上是单例对象,只要应用程序实例存在就一直存在

    2. 在类中初始化的对象的持续时间与原始对象的持续时间一样长。

    3. 在函数内部初始化的对象一直存在,直到函数完成执行。

    现在处理数据库请求的类最好保存为单例。这避免了每次必须执行查询时都需要创建新的数据库连接。因此,创建单例的最简单方法是将其声明为函数或类之外的模块中的变量

    【讨论】:

    • 如果我全局启动缓存(单例)!多进程或多线程去会不会出问题!?
    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多