現有一需求:
前端請求某接口,當該接口中存在耗時的邏輯處理,但前端請求該接口時要求立馬返回結果,而不是處於處理卡住等待接口的狀態,此時需要做成異步的效果。如下:
from threading import Thread
from functools import wraps
from flask import Flask, jsonify
app = Flask(__name__)
def asyncz(f):
wraps(f)
def wrapper(*args, **kwargs):
thr = Thread(target=f, args=args, kwargs=kwargs)
thr.start()
return wrapper
@asyncz
def long_task():
"""耗時處理邏輯
:return:
"""
import time
time.sleep(5)
print('長時間處理')
print('更新狀態')
print('OK')
def insert_data():
print('插入記錄')
return '插入成功'
@app.route('/test')
def index():
# 同步執行插入
res = insert_data()
print('插入:', res)
# 耗時處理邏輯
long_task()
# 同步返回結果
result = {'code': '000000', 'message': 'message', 'data': {}}
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True)
postman請求:
結果:
以上。