簡體   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