服务器退出时,Flask应用不会被销毁?[重复]

问题描述 投票:-1回答:1

我有以下看似简单的问题,但我无法解决。

我在下面做了一个简短的、自成一体的例子。

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的实例被初始化 但只有一个被销毁了 我知道为什么有两个调用 启动 方法(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

有什么办法吗? 谢谢!

python flask werkzeug
1个回答
-1
投票

我认为这是由于覆盖了 Flask.__del__

打电话给超级在那 __del__ 或者不要覆盖

print(f'Deleting Flask app {id(self)}')
super().__del__(self)
© www.soinside.com 2019 - 2024. All rights reserved.