如何处理wget传输异常?批量网页下载脚本卡滞问题求助
解决wget卡在"Awaiting http response"的问题
你遇到的问题是因为-T/--timeout是wget的全局超时设置,它不会单独控制"等待HTTP响应"阶段的超时逻辑。要彻底避免卡住,需要拆分超时控制并添加针对性参数,同时可以用系统级超时做兜底。
修改后的wget命令
wget "$i" --connect-timeout=5 --read-timeout=10 --tries=3 --no-check-certificate --no-dns-cache --inet4-only
参数说明
--connect-timeout=5:限制TCP连接建立的最长时间为5秒,避免在握手阶段卡住--read-timeout=10:核心解决"Awaiting http response"问题,限制从服务器接收响应的最长时间为10秒(包括等待响应头和响应体的时间)--tries=3:失败后重试3次,保留你原有的重试逻辑--no-check-certificate:跳过SSL证书校验,保留原有设置--no-dns-cache:不缓存DNS解析结果,避免旧的无效DNS记录导致的连接异常--inet4-only:强制使用IPv4连接,部分网站IPv6配置不完善,会导致连接长时间无响应
极端情况兜底方案
如果上述参数仍有极端情况导致wget卡住,可以用系统的timeout命令给整个wget进程设置绝对超时,比如限制单个wget任务最多运行30秒:
timeout 30 wget "$i" --connect-timeout=5 --read-timeout=10 --tries=3 --no-check-certificate --no-dns-cache --inet4-only
这样即使wget本身的超时逻辑失效,系统也会强制终止进程,确保脚本能继续处理下一个网站。
内容的提问来源于stack exchange,提问作者nora
相关产品推荐
相关产品推荐

