在Azure Data Factory调用Azure Function Apps失败,提示流已被消耗
解决Azure Data Factory调用Python Azure Function时的"流已被消耗"错误
排查方向1:检查Python Function的请求处理逻辑
Python的req对象(如azure.functions库的HttpRequest)的请求流仅能被读取一次,若代码中重复读取请求体,就会触发该错误:
- 避免同时使用
req.get_json()和req.get_body(),二者都会消耗流 - 不要多次调用
req.get_json(),需重复使用时先将结果存入变量
错误示例代码:
def main(req: HttpRequest) -> HttpResponse: # 第一次读取流 data1 = req.get_json() # 第二次读取触发错误 data2 = req.get_body() return HttpResponse("OK")
修正后代码:
import json from azure.functions import HttpRequest, HttpResponse def main(req: HttpRequest) -> HttpResponse: # 仅读取一次请求流并存储 req_body = req.get_body() data1 = json.loads(req_body) # 直接使用已读取的变量,不重复读取流 data2 = req_body return HttpResponse("OK")
排查方向2:检查ADF活动的请求配置
- 确认ADF的Azure Function活动中,未重复传递请求体或配置多次读取相关参数
- 若开启启用批处理,需验证Function的批处理逻辑是否正确处理请求流,避免重复读取
排查方向3:检查Function App的运行时与依赖包
- 确认Python运行时版本是否近期有更新(如从3.8升级到3.10),部分版本对请求流的处理逻辑可能有变化
- 检查
azure-functions包版本,尝试回退至之前正常运行的版本,示例命令:
pip install azure-functions==1.14.0 --target=".python_packages/lib/site-packages"
排查方向4:重置Function App实例
实例运行环境可能出现异常,可在Azure门户执行以下操作:
- 直接重启Function App
- 进入配置 -> 常规设置,点击重置清除实例缓存状态
内容的提问来源于stack exchange,提问作者Đặng Việt Khánh
相关产品推荐
相关产品推荐

