Python:控制超时长度

cit*_*cit 4 python

我在脚本中运行的代码类似于以下代码:

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.

gim*_*mel 7

从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中的新功能.