jupyter或aws glue notebook中api连接超时主因是requests默认connect超时仅3秒,须显式设timeout元组(如(15,30));对封装函数应通过config或func_timeout注入超时;批量请求需结合tenacity指数退避重试。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Jupyter或AWS Glue Notebook中调用外部API时,连接超时报错(如“ConnectionTimeout”或“requests.exceptions.ConnectTimeout”)往往不是因为网络真断了,而是默认的连接等待时间太短——Requests库默认连接超时仅3秒,而某些内网服务、代理链路或高延迟环境需要更长时间才能完成TCP握手。必须显式设置timeout参数,否则请求会在建立连接阶段就被中断,根本没机会发出去。
用requests.get/post显式传timeout元组
第一步:确认你用的是requests库发起请求(绝大多数Notebook场景如此)。
第二步:把原来的requests.get(url)或requests.post(url, json=data)改成带timeout参数的形式。
第三步:传入元组timeout=(connect_seconds, read_seconds),例如:requests.get("https://api.example.com", timeout=(15, 30))——这表示最多等15秒建连,连上后再等30秒收完响应体。
【connect_seconds必须设够,否则请求根本发不出去】很多用户只调大read部分,却忽略connect超时,结果还是报ConnectTimeout。内网DNS解析慢、防火墙策略延迟、负载均衡器转发耗时都算在connect阶段。
对已封装的函数统一加超时控制
如果你调用的是自己写的fetch_data()或第三方SDK方法(如boto3.client().get_object),不能直接改requests调用,就得从源头注入timeout。
方法一:检查该函数是否支持timeout或config参数。例如boto3客户端可这样初始化:
import boto3<br>client = boto3.client('s3', config=boto3.session.Config(connect_timeout=20, read_timeout=60))
方法二:若函数不暴露底层timeout,用func_timeout库强制截断(仅限非Windows系统且非主线程敏感场景):
from func_timeout import func_timeout, FunctionTimedOut<br>try:<br> result = func_timeout(45, fetch_data, args=("https://api.example.com",))<br>except FunctionTimedOut:<br> print("整个请求流程超时")
注意:func_timeout在Glue Notebook或Windows环境下可能失效,优先走方法一。
批量请求时用tenacity做带退避的重试
单纯延长单次超时不能解决不稳定链路问题。当API偶发连接失败时,应配合指数退避重试,避免瞬时失败直接报错。
① 安装tenacity:%pip install tenacity(在Notebook单元格里运行)
② 写装饰器包裹请求函数:
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type<br>import requests<br><br>@retry(<br> stop=stop_after_attempt(4),<br> wait=wait_exponential(multiplier=2, min=1, max=10),<br> retry=retry_if_exception_type((requests.exceptions.ConnectTimeout, requests.exceptions.ConnectionError))<br>)<br>def robust_get(url):<br> return requests.get(url, timeout=(10, 30))
③ 调用:response = robust_get("https://api.example.com")
这会按1→2→4→8秒间隔重试,每次连接超时都设为10秒,读取超时30秒——既防卡死,又抗抖动。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











