###前提・実現したいこと
HTTPリクエストが不定期に来る状況で、一定時間(例えば1秒間など)に来たリクエストをまとめて処理し、
処理後にその結果をそれぞれのリクエストに返すにはどうすればよいでしょうか。
というのは、ユーザが画像を投稿し、それに対し、「これはxxである」という回答を返すという画像認識のサービスを作ろうとしていて、
学習したニューラルネットワークの予測モデルをAPIとして用いようとしており、
一枚の予測の計算時間に500msほどかかるのですが、それをバッチ処理してスループットを上げたい、という状況です。
(GPUを積んでおり、並列処理のコストが低いです。)
自分でトライした時は、FlaskやAiohttpを用いようとしましたが、各リクエストごとにプロセスが決まっているのではなく、
全体のプロセスをどうまとめればよいのか分かりませでした。
Webサーバには疎く、基礎的な質問かもしれませんが、よろしくお願いします。
###補足情報
- Python3.6
- Flaskを用いた場合の、一枚の画像を処理する疑似コード
app = Flask(__name__) net = My_net() @app.route('/', methods=['POST']) def main(): image = Image.open(request.files["file"]) prediction = My_net.predict(image) return prediction app.run(debug=True, host='0.0.0.0', port=5050)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。