You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask部署到Waitress后仍存在首请求慢的懒加载问题

解决Waitress部署Flask后首请求慢的懒加载问题

你遇到的首请求缓慢、后续请求正常的问题,根源并不是Waitress的懒加载模式,而是你的模型资源仍在首次请求时才完成加载——Waitress只是替换了Flask自带的开发服务器,但不会自动改变你代码里资源加载的时机。

具体解决方案:

  • 提前加载核心资源:将模型加载逻辑从路由处理函数中移到全局初始化阶段,也就是在创建Flask应用之后、定义路由之前执行。这样服务启动时就会预先加载好模型,避免首请求时的加载耗时。

修改后的代码示例:

import flask
import io
import string
import time
import os
from flask import Flask, jsonify, request
import load_model
import prepare_image
from flask_cors import CORS
from waitress import serve
from paste.translogger import TransLogger

app = Flask(__name__)
# 控制文件大小不超过16MB
app.config['MAX_CONTENT_LENGTH'] = 4096 * 4096
cors = CORS(app, resources={r"/*": {"origins": "*"}})

# 关键:在服务启动时提前加载模型
# 根据你的load_model模块实际情况,调用对应的加载函数
model = load_model.load()
print("模型加载完成,服务已就绪")

@app.route('/predict', methods=['POST'])
def predict():
    # 直接使用已加载好的model处理请求,无需再次加载
    # 替换成你的实际处理逻辑
    file = request.files.get('image')
    image_data = prepare_image.process(file)
    prediction = model.predict(image_data)
    return jsonify({"prediction": prediction})

if __name__ == '__main__':
    serve(TransLogger(app, setup_console_handler=False), port=5000)
  • 确保加载逻辑的唯一性:如果load_model模块中的加载函数没有做重复加载判断,建议添加单例逻辑或全局标记,避免重复初始化资源。

  • 启动时验证加载状态:通过打印日志或其他方式,确认服务启动阶段已完成模型加载,这样就能直观判断首请求慢的问题是否解决。

内容的提问来源于stack exchange,提问作者Michel Rivas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:45:29