服务器退出时Flask应用程序未被销毁?

2024-06-17 10:44:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个看似简单的问题,我无法解决

我在下面做了一个简短、自我包容的例子:

from flask import Flask


class MyFlask(Flask):

    def __init__(self, name):
        super().__init__(name)
        print(f'Initialising Flask app {id(self)}')

    def __del__(self):
        print(f'Deleting Flask app {id(self)}')


if __name__ == "__main__":
    app = MyFlask(__name__)
    app.run(host='0.0.0.0', port=5000, debug=True)

当运行此操作时,您将看到MyFlask的两个实例被初始化,但只有一个实例被销毁。我知道为什么有两个调用init方法(Werkzeug的工作方式),但为什么只有一个被销毁

请参见下面的示例输出:

(venv) D:\Onedrive\Documents\Projects\FlaskReloader>python example.py
Initialising Flask app 1944027544880
 * Serving Flask app "example" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
Initialising Flask app 2213899877680
 * Debugger is active!
 * Debugger PIN: 247-475-647
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Deleting Flask app 1944027544880

有什么想法吗?谢谢


Tags: 实例nameselfidappflaskinitis
1条回答
网友
1楼 · 发布于 2024-06-17 10:44:29

我认为它是由Flask.__del__的覆盖引起的

对该__del__调用super或不重写

print(f'Deleting Flask app {id(self)}')
super().__del__(self)

相关问题 更多 >