[英]Flask RESTful API structure
我正在尝试使用flask创建一个简单的RESTful风格api。 我想向服务器发送一些数据,让服务器在返回输出之前通过我具有的两个模型并行运行数据。
我的问题如下。 我想并行地通过两个模型传递数据,所以我假设我将需要多处理。 另外,我不想每次调用api时都加载模型,所以我想提前预加载模型。 关于如何最好地构造这个的任何想法? 我的api代码段示例如下
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods = ['POST'])
def api_message():
if request.headers['Content-Type'] == 'application/octet-stream':
data = request.data
#process data in parallel with preloaded models
return "result"
else:
#return error code
if __name__ == '__main__':
app.run()
本质上我的问题可以归结为
如何通过两个模型并行发送数据(例如,使用多处理或其他方法)
我如何预先预加载模型,这样就不必在每次调用api_message()
时都进行设置,因为这会产生很多开销。
我是Flask的新手,因此非常感谢任何建议,谢谢!
好的,看起来您需要加载的所有模型都是在flask应用程序中实例化它们。 然后,如果您打算将用于(预加载的)模型的模块称为“ process_data”,并将这些模型称为“ Model1”和“ Model2”,那么您对我的代码进行了少许修改并添加了多处理功能,如下所示这个:
from flask import Flask, request
import multiprocessing
import process_data
from models import Model1, Model2
model1 = Model1()
model2 = Model2()
app = Flask(__name__)
models = [model1, model2]
@app.route('/api', methods = ['POST'])
def process_in_parallel():
if request.headers['Content-Type'] == 'application/octet-stream':
data = request.data
else:
#return error code
def worker(model, data):
process_data(model, data)
return
jobs = []
for model in models:
p = multiprocessing.Process(target=worker(model, data))
jobs.append(p)
p.start()
if __name__ == '__main__':
app.run()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.