You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Linux函数应用Blob Trigger触发时Runtime Worker报错排查

Azure Linux Functions Blob Trigger KeyError排查方案

关于azure-functions-host的疑问

azure-functions-host是Azure Functions的平台级运行时宿主,由Azure托管维护,不需要在requirements.txt中声明安装,它和Python代码的依赖包无关,你的问题和这个组件没有直接关系。

错误根源分析

从堆栈信息可以明确,错误出现在__init__.py第16行的print(df[0]),但你贴出的main函数代码中并没有这段逻辑,说明该代码存在于fs_program_etl的调用流程中。KeyError: 0的本质是:你尝试用数字0作为列名访问pandas DataFrame,但当前DataFrame不存在名为0的列,或者数据读取异常导致DataFrame结构不符合预期。

具体排查思路

  • 定位出错代码:检查fn_foodsecurity/functions/fs_program_etl.py中生成DataFrame的逻辑,确认数据读取后df的列结构——比如是否误将行索引操作当成了列索引操作,或者数据源本身没有预期的列。
  • 验证环境数据差异:本地用LOCALSTORAGE测试时的Blob数据,和部署后触发的Blob数据是否完全一致?比如文件编码、表头格式、列数量是否有差异,这是本地正常但部署出错的常见原因。
  • 增强日志调试:在fs_program_etl中添加日志输出,打印DataFrame的列信息和前几行数据:
    logging.info(f"DataFrame columns: {df.columns.tolist()}")
    logging.info(f"DataFrame sample: {df.head().to_string()}")
    
    部署后查看函数日志,对比本地环境的DataFrame结构,找出差异点。
  • 固定依赖版本:检查本地和部署环境的依赖包版本是否一致,尤其是pandas、azure-functions这类核心包。在requirements.txt中固定版本号,避免自动升级导致兼容性问题,示例:
    azure-functions==1.17.0
    pandas==2.1.4
    
  • Blob流读取校验:确认fs_program_etl中处理func.InputStream的逻辑是否正确,比如是否正确将流转换为可读取的格式,是否设置了正确的分隔符、编码等参数。本地可能用本地文件路径读取,部署时用流读取需要确保逻辑一致。

内容的提问来源于stack exchange,提问作者Alicia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:55:25