Airflow HTTP连接Headers配置报错:Header类型不符如何解决?
Airflow HTTP连接x-api-key认证报错解决方法
你在Airflow HTTP连接的「Extra」区域配置headers字典时,直接传入了嵌套字典,导致DAG执行时抛出类型不匹配错误:
ERROR - Failed to execute job 8 for task get_api_data (Header part ({'x-api-key': ''}) from ('headers', {'x-api-key': ''}) must be of type str or bytes, not <class 'dict'>;

问题根源
Airflow对HTTP连接的headers参数要求是序列化后的JSON字符串,而非直接传入字典。如果直接写{"headers": {"x-api-key": "xxx"}},Airflow会把headers对应的字典值直接传递给请求库,而请求库要求每个请求头的值必须是字符串/字节类型,因此触发类型错误。
解决步骤
将headers对应的内层字典转成JSON字符串(注意转义双引号),正确的「Extra」配置格式如下:
{"headers": "{\"x-api-key\": \"你的API密钥\"}"}
或者你可以先把{"x-api-key": "你的API密钥"}用JSON序列化工具处理成字符串,再放到外层字典的headers字段中。
验证
保存连接后重新触发DAG,Airflow会自动将这个字符串反序列化为字典,正确携带x-api-key请求头完成认证。
内容的提问来源于stack exchange,提问作者Empusas
相关产品推荐
相关产品推荐

