使用 Werkzeug 重新加载器重新加载部分代码

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 重新加载其他所有内容,但如果模型已加载一次,则将模型保留在内存中。