如何解决传输时 FTP 无传输超时 - Python ftplib
对 FTP 服务器不太了解...从 NOAA(国家海洋和大气管理局)FTP 服务器传输大量数据(以文本格式)并将其插入到 SQL Server。它运行了数千万行,直到我遇到了我遇到的最大文件,大约 2.5MB [仅文本]。
for file in ftpList:
if file.endswith(".gz") and not failedRun:
flo = io.BytesIO()
ftp.retrbinary('RETR ' + file,flo.write)
flo.seek(0)
with gzip.open(flo,'rb') as f:
for line in f:
## REPLACE FUNCTION FOR QUERY FILE ##
cursor.execute(qry_wx)
cursor.commit()
当尝试运行这个比普通文件更大的文件时,这是我收到的错误:
2021-01-02 12:07:19,558-ERROR-Error: 421 No transfer timeout (300 seconds): closing control connection
Traceback (most recent call last):
File "E:\PythonProjects\ISH\WX_TO_DB.py",line 72,in <module>
ftp.retrbinary('RETR ' + file,flo.write)
File "E:\ProgramData\Anaconda3\lib\ftplib.py",line 441,in retrbinary
self.voidcmd('TYPE I')
File "E:\ProgramData\Anaconda3\lib\ftplib.py",line 278,in voidcmd
return self.voidresp()
File "E:\ProgramData\Anaconda3\lib\ftplib.py",line 251,in voidresp
resp = self.getresp()
File "E:\ProgramData\Anaconda3\lib\ftplib.py",line 244,in getresp
raise error_temp(resp)
ftplib.error_temp: 421 No transfer timeout (300 seconds): closing control connection
我尝试将 FTP 类的初始调用中的超时参数更改为 >300 秒,但后来了解到此无传输超时是 FTP 服务器的默认设置,我无法更改。
我希望我能更好地解释这个问题,但就像我说的那样,我对此还很陌生,并不完全理解 retrbinary 方法。这里有什么建议吗?
解决方法
服务器有限制,在服务器终止连接之前,您不能传输任何文件的时间。
作为一种解决方法,首先下载所有文件。然后才处理它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。