通过REST API触发Airflow的网络问题及解决方案 - 原创 | CSDN博客

作者:API传播员 · 2026-01-04 · 阅读时间:3分钟

通过REST API触发Airflow任务时,可能会遇到一些网络问题,例如权限验证失败等。本文将记录一个实际案例中遇到的401错误及其解决方案,帮助读者更好地理解和解决类似问题。


问题描述

在测试中,使用Pythonrequests模块向Airflow网络服务器发送POST请求,代码如下:

url = "http://10.*.*.*:8080/api/v1/dags/{}/dagRuns".format(dag_id)
res = requests.post(
    url,
    data=json.dumps(data_info),
    auth=(user, password),
    headers=headers
)

在实际操作中,通过搜索引擎找到的解决方案大多集中在403错误的处理上,而本文所遇到的是401错误。401错误通常与权限验证相关,需要进一步分析和处理。


解决方案

官方说明

根据官方文档,Airflow支持多种身份验证方式,包括Kerberos身份验证和基本身份验证。本文采用基本身份验证的方式进行解决。

配置基本身份验证

以下是具体的操作步骤:

  1. 打开Airflow的配置文件,找到auth_backend选项,并将其设置为airflow.[api](https://www.explinks.com/wiki/api/).auth.backend.basic_auth
  2. 确保启用了稳定的REST API,而不是实验性的API。相关配置如下:
[api]
# 禁用实验性API
enable_experimental_api = False

# 设置身份验证后端为基本身份验证
auth_backend = airflow.api.auth.backend.basic_auth# 设置API请求的最大页面限制
maximum_page_limit = 100# 设置默认页面限制
fallback_page_limit = 100
  1. 保存配置文件后,重启Airflow的Web服务器服务,使配置生效。

注意事项

  • 实验性API已被弃用:从Airflow 2.0版本开始,实验性REST API已被弃用,建议使用稳定的REST API。具体参考官方文档:稳定REST API
  • 权限验证:确保在API请求中使用正确的用户名和密码进行身份验证。
  • 官方文档:更多详细信息可参考Airflow API文档

总结

通过调整Airflow的身份验证配置,可以有效解决REST API请求中遇到的401错误问题。本文采用基本身份验证的方式,修改配置文件并重启服务后,问题得以解决。希望本文的记录能为遇到类似问题的读者提供参考。


参考文献

原文链接: https://blog.csdn.net/qq_43439214/article/details/135815077