如何解决在 gcloud 应用引擎上运行 Python Flask 应用的延迟非常高
我有这个小型 Python Flask 应用程序,它可以将文件作为输入发布,并通过 tensforflow keras 模型运行该文件以返回预测。
在我的旧笔记本电脑上,在本地运行它是超快的。该应用消耗大约 450MB 或内存。
现在我已将此应用部署到 gcloud 应用引擎,我遇到了极高的延迟,从 1,900 到 3,500 毫秒不等。比我自己的笔记本电脑慢 1000 倍!它不仅速度慢,而且因为它启动了很多实例。
我尝试过 F2 和 F4 实例(F1 没有提供足够的内存),但没有任何区别。
app.yaml
runtime: python37
env: standard
instance_class: F2
entrypoint: gunicorn -b :$PORT main:app
main.py
from flask import Flask
from flask_cors import CORS
from flask_restful import Api,Resource,reqparse,abort
from firebase import verifyToken,log
from model_manager import predict
import werkzeug,os
import tempfile
app = Flask(__name__)
CORS(app)
api = Api(app)
post_args = reqparse.RequestParser()
post_args.add_argument('file',type=werkzeug.datastructures.FileStorage,location='files',help="No file provided.",required=True)
post_args.add_argument('Authorization',type=str,location='headers',help="No auth token provided.",required=True)
class Analyze(Resource):
def post(self):
data = post_args.parse_args()
if not verifyToken(data['Authorization']):
abort(401,message="The user is not authorized to use this ")
try:
tf = os.path.join('tmp',tempfile.NamedTemporaryFile().name)
data['file'].save(tf)
result = predict(tf)
except Exception as ex:
abort(400,message=ex)
finally:
if tf:
os.remove(tf)
return result,200
api.add_resource(Analyze,"/")
if __name__ == "__main__":
app.run(debug=False)
我在这里做错了什么导致高延迟吗?
解决方法
最佳实践是使用 tensorflow 服务。阅读https://www.tensorflow.org/tfx/guide/serving了解更多详情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。