python——使用线程池实现异步返回数据
框架
- flask
应用场景
- 当接收到请求,但数据处理比较耗时,希望请求过来时先返回一个响应,再慢慢处理数据,处理完成后再将结果返回给另一个地址。
- 流程:接收到请求,立即返回响应。再处理数据,处理完成后将结果响应给预先定义的URL。
import traceback import requests from concurrent.futures import ThreadPoolExecutor from flask import request, jsonify url = "结果数据要返回的新地址URL" def processing_data(data) print("数据处理...") result_data = "处理完,要返回的数据" try: requests.post(url, data=result_data, timeout=10) except Exception as exc: print(exc) @extra.route("/submit", methods=['POST']) def submit(): data = request.get_data() try: # 创建ThreadPoolExecutor实例 executor = ThreadPoolExecutor(max_workers=3) # 提交任务 future = executor.submit(processing_data, data) # 接收到数据先返回响应,不需要等数据处理完再响应 return jsonify({"status": "true", "messge": "null", "data": "null"}) except Exception: print(traceback.format_exc())