Запуск параллельного API на Flask Python? - PullRequest
0 голосов
/ 14 мая 2019

Я использую несколько программ для прогнозов. Я хочу, чтобы запросы колб выполнялись параллельно, вместо того, чтобы запускать обе модели одновременно.

Это работает на питоне 3. У меня сервер работает в другом разделе Linux поблизости. Моя собственная система - это хост, который отправляет файлы. Я пробовал потоки, но я не уверен, что делаю это правильно.


from flask import *
from predict import Predict
import json
import os
from flask_restful import Resource, Api
from ai_predict_test1 import AIPredict
from predictions import Prediction

app = Flask("__main__")
api= Api(app)

def get_response(key, value):
    return {key: value}

def get_model_dir(key):
    json_file = os.path.join(os.getcwd(), "configs", "model_dir.json")
    with open(json_file, 'r') as fp:
        json_obj = json.load(fp)
    return json_obj[key]


@app.route("/video", methods=["POST", "GET"])
def upload_video():
    try:
        video_file_object = request.files["upload_file"]
        # second_file=video_file_object
        # predict_ai = Predict(get_model_dir())
        predict_ai = AIPredict(get_model_dir("cnn_model_dir"), get_model_dir("rnn_model_dir"), True)
        frame_detect_list = predict_ai.verify(video_file_object)
        return jsonify(get_response(key="Response", value=frame_detect_list))
    except Exception as e:
        return jsonify(get_response("ERROR", str(e)))

@app.route("/audio", methods=["POST", "GET"])
def upload_audio():
    try:
        print('inside upload videoo')
        audio_file_object = request.files["upload_file"]
        # predict_ai =
        audio_model = Prediction("audio_model/save_model")
        frame_detect_list = audio_model.predict(audio_file_object)
        return jsonify(get_response(key="Response", value=frame_detect_list))
    except Exception as e:
        return jsonify(get_response("ERROR", str(e)))


if __name__ == "__main__":
    check, file_object = app.run("0.0.0.0", port=5000, threaded=False)

...