Python restfulapi结构
我试图用flask创建一个简单的RESTful风格api。我想向服务器发送一些数据,让服务器在返回输出之前通过两个模型并行运行数据 我的问题如下。我想并行地通过两个模型传递数据,所以我假设我需要多处理。此外,我不希望每次调用api时都加载模型,因此我希望提前预加载模型。你知道如何最好地组织这个吗?下面是我的api代码片段示例Python restfulapi结构,python,rest,flask,Python,Rest,Flask,我试图用flask创建一个简单的RESTful风格api。我想向服务器发送一些数据,让服务器在返回输出之前通过两个模型并行运行数据 我的问题如下。我想并行地通过两个模型传递数据,所以我假设我需要多处理。此外,我不希望每次调用api时都加载模型,因此我希望提前预加载模型。你知道如何最好地组织这个吗?下面是我的api代码片段示例 from flask import Flask, request app = Flask(__name__) @app.route('/api', methods =
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\u message()
时都对模型进行设置,因为这会带来很大的开销我是新来的烧瓶,所以任何建议都非常感谢,谢谢 好的,看起来加载模型所需要做的就是在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()
我希望返回一个只包含415的字符串与使用该代码的实际响应不同;你测试过这个吗?我知道不是。这只是一段代码片段。我的实际问题更多地涉及如何在中并行运行2个模型,并在调用方法之前加载它们。如果您控制服务器实例,则可以使用实例加载模型。另外,如果您只想并行运行模型,是否需要并行发送数据?你能让一个等待另一个,并且只在它们都收到数据时运行它们吗?@postoronnim我确实控制了实例。基本上我不想运行模型1,然后运行模型2,因为它会很慢。每个模块都有相同的数据输入,所以我宁愿将其发送到模型1和模型2,然后在两个模块完成后发送输出。我如何构造它?因此,如果是相同的数据,发送一次,然后您可以使用多处理并行运行这两个模型。我是否需要在
@app.route
下使用单独的函数?