下载NASDAQ_ITCH50.gz文件遭遇WinError 10060错误求助
解决WinError 10060:下载NASDAQ ITCH FTP文件超时问题
先修正URL错误
你的代码里的FTP URL存在两个明显问题:
- 路径包含空格,不符合FTP URL规范
- 目标是具体文件,但URL指向了目录而非文件
修正后的代码:
from urllib.request import urlretrieve # 直接指向目标文件,去掉多余的目录后缀 urlretrieve('ftp://emi.nasdaq.com/ITCH/10302019.NASDAQ_ITCH50.gz', '10302019.NASDAQ_ITCH50.gz')
超时原因排查及解决方案
1. 代理配置缺失
如果你的网络需要通过代理访问外部服务,urllib默认不会自动加载系统代理,需手动配置:
from urllib.request import urlretrieve, ProxyHandler, build_opener, install_opener # 替换为你的代理地址和端口,支持带认证的格式:'ftp://用户名:密码@代理地址:端口' proxy_handler = ProxyHandler({ 'ftp': 'http://your-proxy:port' }) opener = build_opener(proxy_handler) install_opener(opener) # 执行下载 urlretrieve('ftp://emi.nasdaq.com/ITCH/10302019.NASDAQ_ITCH50.gz', '10302019.NASDAQ_ITCH50.gz')
2. 未启用FTP被动模式
多数公共FTP服务器要求使用被动模式(PASV),改用ftplib手动控制更可靠:
import ftplib # 连接服务器并登录(匿名登录) ftp = ftplib.FTP('emi.nasdaq.com') ftp.login() ftp.cwd('ITCH') # 强制开启被动模式 ftp.set_pasv(True) # 下载文件 with open('10302019.NASDAQ_ITCH50.gz', 'wb') as f: ftp.retrbinary('RETR 10302019.NASDAQ_ITCH50.gz', f.write) ftp.quit()
3. 网络与安全限制
- 检查防火墙、杀毒软件是否拦截了FTP 21端口的出站连接
- 用FileZilla等FTP客户端手动连接
ftp://emi.nasdaq.com/ITCH/,确认服务器是否可访问 - 公司网络环境下,需联系IT部门确认是否开放了FTP出站权限
4. 延长超时时间
若因网络延迟导致超时,可设置更长的超时阈值:
# urllib方式设置超时(单位:秒) urlretrieve('ftp://emi.nasdaq.com/ITCH/10302019.NASDAQ_ITCH50.gz', '10302019.NASDAQ_ITCH50.gz', timeout=60) # ftplib方式设置超时 ftp = ftplib.FTP('emi.nasdaq.com', timeout=60)
内容的提问来源于stack exchange,提问作者LexsonLuo
相关产品推荐
相关产品推荐

