flask 異步接口


現有一需求:
前端請求某接口,當該接口中存在耗時的邏輯處理,但前端請求該接口時要求立馬返回結果,而不是處於處理卡住等待接口的狀態,此時需要做成異步的效果。如下:


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請求:

結果:

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM