我有以下看似简单的问题,但我无法解决。
我在下面做了一个简短的、自成一体的例子。
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
有什么办法吗? 谢谢!
我认为这是由于覆盖了 Flask.__del__
打电话给超级在那 __del__
或者不要覆盖
print(f'Deleting Flask app {id(self)}')
super().__del__(self)