我在脚本中运行的代码类似于以下代码:
try:
s = ftplib.FTP('xxx.xxx.xxx.xxx','username','password')
except:
print ('Could not contact FTP serer')
sys.exit()
Run Code Online (Sandbox Code Playgroud)
如果FTP站点无法访问,脚本几乎似乎"挂起"......在sys.exit()似乎被调用之前平均需要大约75秒......我知道75秒可能是非常主观的,并且取决于系统运行...但有没有办法让python只试一次,如果不成功,立即退出?我正在使用的平台是Mac OS X 10.5/python 2.5.1.
从2.6开始,它FTP constructor有一个可选timeout参数:
class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])返回FTP类的新实例.当给出主机时,方法调用connect(host).当给出用户时,另外调用login(user,passwd,acct)方法(其中passwd和acct默认为空字符串,如果没有给出).可选的timeout参数指定阻塞操作(如连接尝试)的超时(以秒为单位)(如果未指定,将使用全局默认超时设置).
在2.6版中更改:添加了超时.
从版本2.3及更高版本开始,可以使用全局默认超时:
socket.setdefaulttimeout(timeout)为新套接字对象设置浮动秒的默认超时.值为None表示新套接字对象没有超时.首次导入套接字模块时,默认值为None.
版本2.3中的新功能.