linux下的Python2.7.3:尝试使用超时值参数时的奇怪行为
from urllib2 import urlopen, Request, HTTPError, URLError
url = "http://speedtest.website-solution.net/speedtest/random350x350.jpg"
try:
#f = urlopen(url, timeout=30) #never works - always times out
f = urlopen(url) #always works fine, returns after < 2 secs
print("opened")
f.close()
print("closed")
except IOError as e:
print(e)
pass编辑:
越挖越深,似乎越低..。以下代码也有相同的问题:
s = socket.socket()
s.settimeout(30)
s.connect(("speedtest.website-solution.net", 80)) #times out
print("opened socket")
s.close()它运行在一个袜子代理后面。使用tsocks python test.py运行。想知道这是否会因为某种原因而破坏套接字超时?不过,timeout=None工作得很好,这似乎很奇怪。
发布于 2014-03-20 04:28:33
好的..。弄明白了。这确实与代理有关。不知道为什么,但下面的代码似乎修复了它:
来源:https://code.google.com/p/socksipy-branch/
将其放在代码的开头:
import urllib2
from urllib2 import urlopen, Request, HTTPError, URLError
import httplib
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "192.168.56.1", 101)
socks.wrapmodule(urllib2)现在一切正常..。
https://stackoverflow.com/questions/22522900
复制相似问题