サンプルコード
import time
import concurrent.futures
@app.route('/api/aaa', methods=['POST'])
def aaa():
def one(args1, args2):
#重い処理(省略)
#処理結果を返す
return result
def two(args3, args4, args5, args6):
return "two"
executor = concurrent.futures.ThreadPoolExecutor(max_workers=2)
#時間が非常にかかる処理
worker_one = executor.submit(one,args1, args2)
#早く終われる処理
worker_two = executor.submit(two,args3, args4, args5, args6)
return worker_two
/api/aaaをコールすると、関数one,two同時に実行される。
twoは早く終われるから、すぐresponseする。
普通の処理ならここで終わりますが、
concurrent.futuresを使うことで、oneはまだバックグラウンドで実行している。
参照:
https://docs.python.org/3/library/concurrent.futures.html
https://qiita.com/castaneai/items/9cc33817419896667f34