socket timeout错误源于底层socket默认超时过短或上层库(如requests)自行设限;需先检查全局超时值,再通过requests的timeout参数、session封装、原生socket控制或setdefaulttimeout统一调整。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在Fitten Code中运行网络请求类代码时突然弹出“Socket Timeout”错误,说明当前环境预设的底层socket读写等待时间太短,而你的目标服务响应略慢或网络路径存在轻微延迟,程序直接中断不再等待。
确认当前超时值并验证是否生效
在Fitten Code编辑区新建一个临时脚本,粘贴以下Python代码并运行:
import socket
print("当前全局默认超时:", socket.getdefaulttimeout())
这一步必须先执行——【Fitten Code未显式设置时,默认超时为None(即无限等待)】,但部分内置HTTP模块(如requests)会覆盖该值为2~5秒。若输出是None,说明问题不在全局socket层,而是上层库自行设限。
对requests请求强制指定timeout参数
这是最直接有效的变通方式,适用于所有使用requests发起HTTP调用的场景。
方法一:单次请求加timeout
requests.get("https://api.example.com/data", timeout=15)
方法二:创建带默认超时的Session对象
s = requests.Session()
s.timeout = 15 # ⚠️注意:此属性不生效,必须在每个请求中传入
s.get("https://api.example.com/data", timeout=15)
方法三:统一封装请求函数(推荐)
def safe_get(url, timeout=20):
try:
return requests.get(url, timeout=timeout)
except requests.exceptions.Timeout:
print(f"请求超时,已重试 {url}")
return None
Fitten Code 1.0.3是一款由清华博士团队打造的AI编程助手,基于国产计图(Jittor)深度学习框架开发。它支持VS Code、JetBrains系列等主流IDE及80多种编程语言。核心功能包括智能代码补全、注释生成、代码解释、Bug检测、单元测试生成等,旨在全方位提升开发效率。该工具对个人用户免费开放。
绕过requests,改用原生socket控制超时
当requests的timeout机制仍被Fitten Code运行时拦截或失效时,可退回到socket层手动建连发送HTTP请求。
第一步:构造原始HTTP GET请求头
host = "api.example.com"
request_line = f"GET /data HTTP/1.1\r\n"
headers = f"Host: {host}\r\nConnection: close\r\n\r\n"
第二步:建立TCP连接并设读写超时
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(25) # 此处设为25秒,覆盖任何中间层限制
s.connect((host, 80))
第三步:发送请求并接收响应
s.sendall(request_line.encode() + headers.encode())
response = b""
while True:
try:
chunk = s.recv(4096)
if not chunk:
break
response += chunk
except socket.timeout:
break
s.close()
【关键点:settimeout()必须在connect()之前调用,否则无效】
修改Fitten Code底层socket默认超时(仅限高级用户)
如果项目中大量使用未显式传timeout的第三方库,且你有权限修改启动入口,可在主脚本最顶部插入:
import socket
socket.setdefaulttimeout(30)
这会将此后所有新建socket对象的默认超时设为30秒。但注意:【此设置不影响已创建的socket对象,也不影响requests等已内部固化超时逻辑的库】。










