我正在使用
waitress
在 IIS 10.0 中提供 Flask Python API,目的是为反向图像搜索提供端点服务。
脚本的初始部分处理导入多个“大文件”,例如“句子编码器”和包含数百万条目的数据索引。总共加载了大约 7.5GB 的辅助数据。
这意味着初始化过程通常需要大约 45 到 60 秒,之后 API 就可以使用了。 app.py
文件的结构类似于:
# Import packages
from flask import Flask, request, jsonify
from flask_restful import Api
from waitress import serve
# Keras, Tensorflow, etc...
# Start APP
app = Flask(__name__)
# Load resources
# Neural Networks, Sentence Encoders, Lookup Indices...
api = Api(app)
# Define endpoints
@app.route('/home', methods=['POST'])
def home():
# Do something...
# ... Other endpoints
if __name__ = '__main__':
serve(app)
服务每分钟都会用空白请求访问网站,以确保 API 保持在“温暖”状态(如本答案中所建议的那样)
但是,我面临一个问题,IIS 似乎以看似随机的间隔回收应用程序池,导致下一个请求的处理时间异常长,并且经常导致超时。 我绝不是设置 IIS 的专家,但迄今为止我的研究引导我尝试:
IIS 应用程序初始化
增加超时限制
也许您可以尝试使用 Gunicorn 服务器,而不是让女服务员为应用程序提供服务,这可能有助于避免让您的应用程序与 Gunicorn 工作人员一起睡觉