我有一个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 ###线路超时?
发布于 2013-03-02 12:03:15
发送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 = Truehttps://stackoverflow.com/questions/15170503
复制相似问题