发送一个 NOOP 命令。这只会检查连接是否仍在进行中,如果您定期执行此操作,它可以保持连接处于活动状态。
例如:
conn.voidcmd("NOOP")
如果连接出现问题,则 FTP 对象将抛出异常。从documentation可以看到,如果有错误,就会抛出异常:
socket.error 和 IOError: 这些是由套接字连接引发的,很可能是您感兴趣的。
exception ftplib.error_reply:从服务器收到意外回复时引发异常。
exception ftplib.error_temp:当收到表示临时错误的错误代码(响应代码在 400–499 范围内)时引发异常。
exception ftplib.error_perm:当收到表示永久错误的错误代码(响应代码在 500–599 范围内)时引发异常。
exception ftplib.error_proto: 当从服务器收到不符合文件传输协议响应规范的回复时引发异常,即以 1-5 范围内的数字开头。
因此,您可以使用try-catch block 来检测错误并进行相应处理。
例如,这个代码示例将捕获一个 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