问题描述
我有一个脚本(如下),可将html文件推送到服务器。 95%的时间都在工作。 但是,大约有5%的时间,服务器出现故障,并且尝试挂起。 它停顿15分钟(900秒),然后失败。
ftp = FTP('[FTP ADDRESS HERE]')
ftp.login('[USERNAME]','[PASSWORD]')
converted_HTML_string = io.BytesIO(HTML_string)
ftp.storbinary('STOR public_html/home.html', converted_HTML_string)
同样,这有95%的时间有效。 如果不是,则在5%的情况下(如果我在挂起时手动中断它,然后再次重新运行该请求),则它会起作用。 这似乎是由服务器临时故障引起的。 我无法控制服务器质量。
真正的问题是挂起时间太长。 我希望能够对它挂起的时间设置一个时限(例如30秒),然后使代码显示“重新运行此ftp命令,直到成功为止”。
那可能吗? 我还有另一种应对方法吗?
谢谢!
1楼
通道超时在ftp服务器上设置。 某些接口(例如FileZilla)允许您配置频道超时。 幸运的是,Python的FTP软件包就是其中之一。 有关更多详细信息,请参见 。 同时,只需尝试timeout参数:
ftp = FTP('[FTP ADDRESS HERE]', timeout=30)
Maxim Lott(OP)能够使用以下命令捕获超时错误,该错误会重试连接,直到可以正常工作:
import socket
except socket.timeout, e:
2楼
这个错误让我想了一会儿。
我在无限循环中设置了True
所以当它发生时,它仍然为真
然后调用名为RemoteTar的类中的函数ftp_connect_to_site()
如果发生此异常,则此功能将重新连接您。
是python的初学者,我能想到的一切
except ftplib.error_temp as e:
print('Time run out reconnect: ',e)
RemoteTar.ftp_connect_to_site()