繁体   English   中英

Flask RESTful API结构

[英]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()

本质上我的问题可以归结为

  1. 如何通过两个模型并行发送数据(例如,使用多处理或其他方法)

  2. 我如何预先预加载模型,这样就不必在每次调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM