gpt4 book ai didi

python - 检查 Python FTP 连接

转载 作者:太空狗 更新时间:2023-10-29 20:38:09 24 4
gpt4 key购买 nike

我有一个 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 ###

如果在 ### do some parsing ### 行期间超时,我该如何检查我的 FTP 连接?

最佳答案

发送 NOOP 命令。这只会检查连接是否仍在进行,如果您定期执行此操作,它可以使连接保持事件状态。

例如:

   conn.voidcmd("NOOP")

如果连接出现问题,则 FTP 对象将抛出异常。从documentation可以看出如果有错误则抛出异常:

socket.error 和 IOError:这些由套接字连接引发,很可能是您感兴趣的。

异常 ftplib.error_reply:从服务器收到意外回复时引发的异常。

异常 ftplib.error_temp:当收到表示临时错误的错误代码(响应代码在 400–499 范围内)时引发异常。

异常 ftplib.error_perm:当收到表示永久错误的错误代码(响应代码在 500–599 范围内)时引发异常。

异常 ftplib.error_proto: 当从服务器收到不符合文件传输协议(protocol)响应规范的回复时引发异常,即以 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

关于python - 检查 Python FTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com