【发布时间】:2021-11-24 13:57:28
【问题描述】:
当我尝试使用 Google Cloud Composer 提供的 Airflow 上的 Python 调用 API 时,我不断收到“[Errno 101] Connection timed out”。
这是我的代码:
r1 = requests.post(
url1,
params=request1_params,
headers=request1_headers
)
a_token = r1.json().get('access_token')
当我尝试触发 DAG 时的响应是这样的:
[2021-10-04 01:21:33,056] {taskinstance.py:1152} 错误 - HTTPSConnectionPool(host='xxx.com', port=443):最大重试次数超出了 url:/sf/xxx/ token?grant_type=password&username=???%40???&password=???%2???&client_id=????&client_secret=???? (由 NewConnectionError 引起('
: 无法建立新连接:[Errno 110] Connection timed out',)) 回溯(最近一次通话最后): _new_conn 中的文件“/opt/python3.6/lib/python3.6/site-packages/urllib3/connection.py”,第 170 行 (self._dns_host, self.port), self.timeout, **extra_kw 文件“/opt/python3.6/lib/python3.6/site-packages/urllib3/util/connection.py”,第 96 行,在 create_connection 提出错误 文件“/opt/python3.6/lib/python3.6/site-packages/urllib3/util/connection.py”,第 86 行,在 create_connection sock.connect(sa) TimeoutError: [Errno 110] 连接超时
我看过一些文章,你需要在发送请求时包含代理,但是我应该使用什么代理?
感谢任何帮助!
编辑: 我发现问题出在我正在使用的气流上。它说专用网络需要配置 NAT。因此,在安装了一些库并设置了 NAT 之后,它现在可以向 API 发送请求了。
感谢大家的帮助。
【问题讨论】:
-
如果我在你的位置,我会尝试连接到 Airflow/Composer 之外的目标服务器,并验证底层请求是否正常工作。如果不是,则不是气流问题。
-
我确实尝试调用该函数并且它有效。所以,唯一可能的原因是气流。虽然,我没有在本地机器上尝试过,但是从互联网上阅读了一些实现,它应该可以工作。
-
您到底想达到什么目标?您是从 GCP UI 还是从本地计算机运行它?你是如何认证自己的?这是你的全部代码?请使用以下更改再次运行 dag,并使用 this snippet 发布输出
标签: python google-cloud-platform python-requests airflow google-cloud-composer