app*_*pel 5 python reload werkzeug flask socket.io
我有一个使用蓝图和 socketio 的 python Flask 应用程序,它在启动应用程序之前将一个大模型(5GB)加载到内存中,如下所示:
启动器.py
import app
from model import load_model
if __name__ == "__main__":
load_model()
app.main()
Run Code Online (Sandbox Code Playgroud)
应用程序
from app import app, socketio
def main():
socketio.run(app, port = 5000)
Run Code Online (Sandbox Code Playgroud)
模型.py
model = None
def load_model():
global model
if model is None:
model = load_bigass_model_from_external_source() #this takes roughly 40 minutes
def get_model():
return model
Run Code Online (Sandbox Code Playgroud)
然后在我看来,我可以调用:
视图.py
from model import get_model
@blueprint.route("/", methods=["GET"])
def home():
print get_model()
Run Code Online (Sandbox Code Playgroud)
现在一切正常,除非我开始更改代码。Werkzeug 重新加载(这本身很好),但它也会再次加载我的模型。加载模型大约需要 40 分钟,因此您可以看到这不是很理想。
我想知道是否有任何方法可以让 Werkzeug 重新加载其他所有内容,但如果模型已加载一次,则将模型保留在内存中。