如何用Python实现HTTP触发的Azure函数流式返回结果?
在Azure Functions中实现流式响应封装
Azure Functions的Python运行时不支持直接返回生成器作为响应体,必须确保响应的每个片段是字符串或字节类型。以下是调整后的可运行代码示例:
import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: request = req.get_json() def generate_stream(): # 替换为真实流式API的调用逻辑 for chunk in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: # 将数字chunk转为字符串,确保符合Azure的响应类型要求 yield f"{chunk}\n" return func.HttpResponse( generate_stream(), mimetype="text/plain", headers={"Transfer-Encoding": "chunked"} )
关键注意事项
- 响应片段类型限制:生成器产出的内容必须是字符串或字节,不能是数字、对象等其他类型,否则会触发运行时错误
- 流式响应配置:通过传入可迭代的生成器给
HttpResponse,并设置Transfer-Encoding: chunked头,Azure会自动处理分块响应的发送 - 自定义内容类型:如果返回JSON格式的流式数据,可将
mimetype改为application/json,同时确保每个生成的chunk是合法的JSON片段(例如yield json.dumps({"data": chunk}) + "\n")
内容的提问来源于stack exchange,提问作者GooJ
相关产品推荐
相关产品推荐

