文章目录
- 一、问题描述
- 二、解决方案
一、问题描述
在flask请求中,有个需求是让调用方一直调接口,并立马返回,而接口方缓存请求,依次执行。
二、解决方案
from flask import Flask, request, jsonify
from queue import Queue
import threading
app = Flask(__name__)
request_queue = Queue()
def process_requests():
while True:
if not request_queue.empty():
request_data = request_queue.get()
# 在这里处理请求数据,可以调用相应的函数进行处理
print("Processing request:", request_data)
# 在这里处理完请求后,可以返回响应给客户端,也可以不返回
else:
# 如果队列为空,等待一段时间后继续检查
# 这里可以根据实际需求调整等待时间
threading.Event().wait(1)
@app.route('/receive_request', methods=['POST'])
def receive_request():
request_data = request.json
# 将请求数据放入队列中
request_queue.put(request_data)
return jsonify({'message': 'Request received and queued.'})
if __name__ == '__main__':
# 启动一个线程来处理请求
request_handler_thread = threading.Thread(target=process_requests)
request_handler_thread.start()
# 启动 Flask 应用
app.run(debug=True)
注意: 需要注意的是,request_queue.get()
之后队列里的值就直接推出了,不用显式推出。
以上就可以做到讲请求立刻返回,接口缓存请求内容自我"消化"。Enjoy~
∼ O n e p e r s o n g o f a s t e r , a g r o u p o f p e o p l e c a n g o f u r t h e r ∼ \sim_{One\ person\ go\ faster,\ a\ group\ of\ people\ can\ go\ further}\sim ∼One person go faster, a group of people can go further∼