我正在尝试使用ftplib.FTP()
使用超时选项作为特定主机名的超时值。但我遇到了奇怪的行为。为了测试它,我编写了一段非常简单的代码。
import ftplib
from ftplib import FTP
ftp = ftplib.FTP("google.com",timeout=2)
API文档说以秒为单位输入超时值,但似乎需要更长的时间,对我来说几乎需要超过8秒。任何人都可以解释一下这种行为吗?我正在使用 python2.7
ftplib.FTP
调用socket.create_connection()
。根据
到文档https://docs.python.org/2/library/socket.html#socket.create_connection
如果主机是非数字主机名,它将尝试解析它
AF_INET 和 AF_INET6,然后尝试连接所有可能的
依次寻址,直至连接成功。
快速检查google.com
将显示大约十几个(或更多)
取决于您所在国家/地区的地区。您的 2 秒超时
应用于each的主机。
如果您想将总时间限制为 2 秒,请先进行查找并将数字地址传递给您的ftplib.FTP
call:
import socket, ftplib
host = socket.gethostbyname('google.com')
ftp = ftplib.FTP(host, timeout=2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)