Rest 将Apache SimpleHTTPOperator与代理和证书一起使用

Rest 将Apache SimpleHTTPOperator与代理和证书一起使用,rest,proxy,airflow,Rest,Proxy,Airflow,我正在尝试使用Airflow获取API响应,并将它们保存到文件中以供进一步处理。 Airflow位于docker容器中,需要代理和证书才能连接到web。当直接使用docker中的curl(将代理和证书传递给它)时,它可以工作并显示结果,但我无法在Airflow中使用SimpleHTTPOperator复制它。 这就是我尝试过的 get_poke_stats = SimpleHttpOperator( task_id="get_poke_stats", method="GET",

我正在尝试使用Airflow获取API响应,并将它们保存到文件中以供进一步处理。 Airflow位于docker容器中,需要代理和证书才能连接到web。当直接使用docker中的curl(将代理和证书传递给它)时,它可以工作并显示结果,但我无法在Airflow中使用SimpleHTTPOperator复制它。 这就是我尝试过的

get_poke_stats = SimpleHttpOperator(
    task_id="get_poke_stats",
    method="GET",
    http_conn_id="http_poke_api",
    endpoint="pokemon/psyduck",
    headers={"Content-Type": "application/json"},
    xcom_push=True,
    proxies={"https": "http://127.0.0.1:8080", "http": "http://127.0.0.1:8080"},
    # verify="/path/to/cert/file/file.cert",
    cert="/path/to/cert/file/file.cert",
    dag=dag
)
连接总是超时,我尝试了cert和verify,但同样的事情发生了。 我试过用不同的电脑安装Ubuntu。它可以在没有代理的情况下访问internet,而且它是有效的,所以它必须通过传递代理和证书变量来实现,但我无法找到有效的组合

这是从日志中获取的,看起来变量已传递,但是

Subtask get_poke_stats **kwargs: {'proxies': {'https': 'http://127.0.0.1:8080', 'http': 'http://127.0.0.1:8080'}, 'verify': '/path/to/cert/file/file.cert'}
然后它继续超时

{base_hook.py:84} INFO - Using connection to: id: http_poke_api. Host: https://pokeapi.co/api/v2/, Port: None, Schema: None, Login: None, Password: None, extra: {}
{http_hook.py:131} INFO - Sending 'GET' to url: https://pokeapi.co/api/v2/pokemon/psyduck
{local_task_job.py:124} WARNING - Time since last heartbeat(0.03 s) < heartrate(5.0 s), sleeping for 4.969908 s
{base\u hook.py:84}INFO-使用到:id:http\u poke\u api的连接。主持人:https://pokeapi.co/api/v2/,端口:无,架构:无,登录:无,密码:无,额外:{}
{http_hook.py:131}信息-将'GET'发送到url:https://pokeapi.co/api/v2/pokemon/psyduck
{local_task_job.py:124}警告-自上次心跳(0.03秒)以来的时间<心率(5.0秒),睡眠时间为4.969908秒

任务运行日志中有什么有趣的内容吗?我已经用日志中的一个示例更新了问题子任务日志行显示您正在使用
verify
参数,但您发布的代码使用
cert
。你也可以发布你从代理中得到的错误,或者仅仅是完整的日志。当我使用cert时,它看起来与上面的方法完全相同。。心跳线重复几次,然后我得到最大重试次数超过错误。任务运行日志中有什么有趣的内容吗?我已经用日志中的一个示例更新了问题子任务日志行显示您正在使用
verify
参数,但您发布的代码使用
cert
。你也可以发布你从代理中得到的错误,或者仅仅是完整的日志。当我使用cert时,它看起来与上面的方法完全相同。。心跳线重复几次,然后我得到最大重试次数超过错误。