如何解决在 Heroku 中部署极其简单的 Flask 应用程序时内存不足
我想将一个用 Fast AI 制作的简单机器学习模型 (resnet34) 部署到 Heroku。
from flask import Flask
from fastai.vision.all import *
app = Flask(__name__)
learn = load_learner("./export.pkl")
@app.route("/<path:image_url>")
def hello_world(image_url):
print(image_url)
response = requests.get(image_url)
img = PILImage.create(response.content)
predictions = learn.predict(img)
print(predictions)
return predictions[0]
它可以正常工作几次,但是 heroku 然后开始记录以下内容:
我不明白为什么会这样……我的直觉告诉我垃圾收集器在这里应该没问题。
这是我的要求.txt
-f https://download.pytorch.org/whl/torch_stable.html
torch==1.8.1+cpu
torchvision==0.9.1+cpu
fastai>=2.3.1
Flask==2.0.1
gunicorn==20.1.0
Pillow
requests==2.26.0
编辑:我自己发布的答案并不完全正确。根本原因是我没有关闭图像: 正确的代码:
@app.route("/<path:image_url>")
def hello_world(image_url):
print(image_url)
response = requests.get(image_url)
img = PILImage.create(response.content)
predictions = learn.predict(img)
img.close()
return predictions[0]
解决方法
我认为问题在于 pycache 越来越大。
请务必使用以下环境变量集运行您的应用:
PYTHONDONTWRITEBYTECODE=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。