urllib2.urlopen timeout works only when connected to Internet
我正在使用Python 2.7代码通过使用urllib2库从HTML页面读取值。我希望在没有Internet的情况下在5秒后超时urllib2.urlopen函数并跳转到剩余的代码。
当计算机连接到工作的互联网连接时,它按预期工作。如果我设置
这是我的代码:
1 2 3 4 5 6 7 | import urllib2 url ="https://alfahd.witorbit.net/fingerprint.php?n" try: response = urllib2.urlopen(url , timeout=5).read() print response except Exception as e: print e |
连接到Internet时超时值为5的结果:
1 | 180 |
连接到Internet时超时值为0.1的结果:
1 | <urlopen error timed out> |
似乎超时正在运行。
未连接到Internet并且具有任何超时值时的结果(每次打开url大约40秒后超时,尽管我为
1 | <urlopen error [Errno -3] Temporary failure in name resolution> |
如果没有Internet连接,我怎么能超时urllib2.urlopen?我错过了什么吗?请指导我解决这个问题。谢谢!
因为名称解析在请求发生之前发生,所以它不受超时限制。 您可以通过在
1 | 10.10.10.10 subdomain.example.com |
或者,您可以直接使用IP地址,但是,某些Web服务器要求您使用主机名,在这种情况下,您需要修改