zoukankan      html  css  js  c++  java
  • 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请求:

    结果:

    以上。

  • 相关阅读:
    深入了解Struts2返回JSON数据的原理及具体应用范例
    Struts国际化
    LeetCode Balanced Binary Tree
    LeetCode Triangle
    Binary Tree Level Order Traversal
    Pow(x,n)
    Symmetric Tree
    LeetCode Word Search
    LeetCode Insert Interval
    Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/lovebkj/p/14474957.html
Copyright © 2011-2022 走看看