【发布时间】:2020-10-05 04:05:07
【问题描述】:
我有以下看似简单的问题,但我无法弄清楚。
我在下面做了一个简短的、自包含的例子:
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
有什么想法吗?谢谢!
【问题讨论】: