urllib2.install_opener(urllib2.build_opener(LowLevelHTTPHandler)) # tell urllib2 to use your HTTPHandler in replacement of the standard HTTPHandler
httpRequest = urllib2.Request("http:/www....com")
pageContent = urllib2.urlopen(httpRequest)
pageContent.readline()
你一定要用urllib2吗?
或者,可以使用httplib2,它设置了TCP_NODELAY选项。
https://code.google.com/p/httplib2/
它给你的项目增加了依赖性,但看起来不像猴子修补那么脆弱。
对于请求,类似乎在
request.packages.urllib3
中,有2个类, HTTPConnection和HTTPSConnection。它们应可在模块顶层进行MonkeyPatch:如果需要访问所用套接字上的此类低级属性,则必须重载某些对象。
首先,您需要创建一个HTTPHandler的子类,标准库中的子类可以:
如您所见,它使用
HTTPConnection
打开连接。。。您还必须重写它;)才能升级connect()
方法。像这样的事情应该是个好的开始:
urllib2足够聪明,可以让您对某个处理程序进行子类化,然后使用它,urllib2.build_opener是为此而创建的:
相关问题 更多 >
编程相关推荐