[英]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.