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

Gunicorn部署Flask应用时FastAI模型getImages属性缺失问题求助

Gunicorn部署Flask+FastAI模型时的函数找不到问题解决及规避方案

问题根源

本地运行Flask应用时,__main__指向的是你的app代码模块,FastAI保存模型时会记录依赖函数getImages所在的模块为__main__;但用Gunicorn启动时,__main__变成了gunicorn的主模块(/usr/local/bin/gunicorn),模型加载时自然找不到属于原app模块的getImages函数。

现有部署问题的解决方法

  • 把getImages函数迁移到独立模块,比如新建utils.py文件,将函数定义放在其中,然后在Flask app的主文件里通过from utils import getImages导入使用
  • 重新训练并保存模型:训练时确保getImages是从独立模块导入的,而非写在训练脚本的主作用域内。这样模型保存时会记录函数所属模块为utils,而非__main__,部署时就能正常找到
  • 临时修复(不推荐长期使用):在Flask app主文件开头添加以下代码,强制将__main__映射到当前app模块:
    import sys
    sys.modules['__main__'] = sys.modules[__name__]
    

未来构建FastAI模型的规避方案

  • 所有自定义数据处理、模型相关的函数,都放在单独的工具模块(如data_utils.py、model_utils.py)中,避免直接写在训练脚本的主作用域
  • 训练过程中,所有依赖的自定义函数必须从独立模块导入,不要在训练脚本里直接定义主作用域函数
  • 保存模型前,检查模型依赖的函数所属模块:可以查看learn对象的相关属性,确认没有函数关联到__main__模块
  • 本地提前模拟部署环境测试:用gunicorn app:app命令在本地启动服务,验证模型加载和推理是否正常,提前排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:51:45