Kubuntu 24.04下Python网络请求异常缓慢的解决求助
解决Kubuntu 24.04下Python网络请求缓慢问题
针对你遇到的Python网络请求极慢但其他网络应用正常的情况,可按以下步骤排查解决:
1. 排查DNS解析问题
Python的DNS解析逻辑可能与浏览器不同,先测试直接用IP访问:
import requests requests.get("https://142.250.185.14") # Google的IPv4地址
如果请求速度正常,说明是DNS解析延迟:
- 切换系统DNS服务器为公共DNS(如8.8.8.8),修改
/etc/resolv.conf或通过系统网络设置调整; - 安装
dnspython库替代默认DNS解析,代码示例:
import dns.resolver import requests resolver = dns.resolver.Resolver() resolver.nameservers = ['8.8.8.8'] answer = resolver.resolve('google.com', 'A') ip = answer[0].address requests.get(f"https://{ip}", headers={"Host": "google.com"})
2. 检查SSL/TLS握手异常
尝试强制使用TLS 1.3并更新系统证书:
- 测试指定TLS版本的请求:
import requests from requests.adapters import HTTPAdapter from urllib3.poolmanager import PoolManager import ssl class TLS13Adapter(HTTPAdapter): def init_poolmanager(self, *args, **kwargs): ctx = ssl.create_default_context() ctx.set_alpn_protocols(['h2', 'http/1.1']) ctx.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_TLSv1_2 kwargs['ssl_context'] = ctx return super().init_poolmanager(*args, **kwargs) session = requests.Session() session.mount('https://', TLS13Adapter()) session.get("https://google.com")
- 重新安装系统CA证书:
sudo apt update && sudo apt install --reinstall ca-certificates
3. 禁用错误代理设置
Python可能自动读取了无效的代理配置,测试禁用代理:
import requests requests.get("https://google.com", proxies={"http": None, "https": None})
如果速度恢复,检查环境变量中的代理设置:
echo $http_proxy $https_proxy
若存在不需要的代理,执行unset http_proxy https_proxy临时取消,或删除~/.bashrc、/etc/profile中的代理配置行。
4. 强制使用IPv4避免解析延迟
部分网络环境下IPv6解析或连接缓慢,强制Python使用IPv4:
- 代码中临时强制:
import socket import requests def force_ipv4(): orig_getaddrinfo = socket.getaddrinfo def new_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): return orig_getaddrinfo(host, port, socket.AF_INET, type, proto, flags) socket.getaddrinfo = new_getaddrinfo force_ipv4() requests.get("https://google.com")
- 系统层面调整IPv4优先级:编辑
/etc/gai.conf,取消注释以下行:
precedence ::ffff:0:0/96 100
5. 验证Python与系统库兼容性
使用系统包管理的Python及请求库替代pip安装版本,避免库兼容问题:
sudo apt install python3-requests python3-httpx
之后用系统Python运行测试代码,看是否恢复正常。
内容的提问来源于stack exchange,提问作者Seliverstov
相关产品推荐
相关产品推荐

