我从我下载许多文件和之间的处理他们的FTP连接。 我希望能够检查之间我的FTP连接没有超时。 因此,代码看起来是这样的:
conn = FTP(host='blah')
conn.connect()
for item in list_of_items:
myfile = open('filename', 'w')
conn.retrbinary('stuff", myfile)
### do some parsing ###
如何检查的情况下,我的FTP连接它时超时### do some parsing ###
线?
发送NOOP命令。 这确实只是检查连接仍在继续,如果你这样做定期它可以保持连接。
例如:
conn.voidcmd("NOOP")
如果没有与连接出现问题,则FTP对象将抛出异常。 您可以从看到的文档即抛出异常,如果有一个错误:
socket.error和IO错误:这些是由插座连接提高,最有可能你有兴趣的人。
例外ftplib.error_reply:当从服务器接收到一个意想不到的回答异常升高。
例外ftplib.error_temp:异常当接收到错误代码(在范围400-499响应码)标志着一个临时错误引发。
例外ftplib.error_perm:异常当接收到错误代码(在范围500-599响应码)标志着一个永久的错误引发。
例外ftplib.error_proto:异常当从一个不适合的文件传输协议的响应规格的服务器,即得到的答复与范围内的1-5数字开始上升。
因此,你可以使用try-catch块检测错误,并相应地处理它。
例如代码将赶上一个IOError这个样本,告诉你它,然后重试操作:
retry = True
while (retry):
try:
conn = FTP('blah')
conn.connect()
for item in list_of_items:
myfile = open('filename', 'w')
conn.retrbinary('stuff', myfile)
### do some parsing ###
retry = False
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
print "Retrying..."
retry = True