发送 NOOP 命令。这只会检查连接是否仍在进行,如果您定期执行此操作,它可以保持连接处于活动状态。
例如:
conn.voidcmd("NOOP")
如果连接出现问题,则 FTP 对象将引发异常。你可以从文档中看到,如果有错误,就会抛出异常:
socket.error 和 IOError:这些是由套接字连接引发的,很可能是您感兴趣的。
异常 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