在研发工作中,为了减少接口耗时,部分接口的协议会约定流式返回数据。当对调用流式接口的接口进行测试时,需要模拟下游流式接口的各种可能返回,而这个与一般意义上接口返回的模拟不同之处在于,还要考虑包的延时。因此,本文记录一下,如何使用python编写1个流式返回数据接口。
接口定义示例:
from flask import Flask, Response
import json
import time
app = Flask(__name__)
# 这里定义接口返回的流式数据
mock_data = [
[json.dumps({"data": {}, "status": 0}), 10],
[json.dumps({"data": {}, "status": 0}), 1]
]
@app.route("/api", methods=["post"])
def process():
"""
/api接口定义
"""
def generate():
"""
流式返回数据
"""
for each in mock_data:
v = each[0]
t = each[1]
yield v + "\r\n"
if t > 0:
time.sleep(t)
yield "0\r\n\r\n"
return Response(generate(), mimetype="text/plain")