Added support for persistent connections (keep-alive) in proxy mode

This commit is contained in:
László Vaskó
2012-12-02 01:19:07 +01:00
parent e8d20926d3
commit 5eb78876e1
+16 -10
View File
@@ -557,7 +557,7 @@ class Request(object):
proxy = self.proxies.get(_p.scheme)
if proxy and not any(map(_p.hostname.endswith, no_proxy)):
conn = poolmanager.proxy_from_url(proxy)
conn = poolmanager.ProxyManager(self.get_connection_for_url(proxy))
_proxy = urlparse(proxy)
if '@' in _proxy.netloc:
auth, url = _proxy.netloc.split('@', 1)
@@ -565,15 +565,10 @@ class Request(object):
r = self.proxy_auth(self)
self.__dict__.update(r.__dict__)
else:
# Check to see if keep_alive is allowed.
try:
if self.config.get('keep_alive'):
conn = self._poolmanager.connection_from_url(url)
else:
conn = connectionpool.connection_from_url(url)
self.headers['Connection'] = 'close'
except LocationParseError as e:
raise InvalidURL(e)
conn = self.get_connection_for_url(url)
if not self.config.get('keep_alive'):
self.headers['Connection'] = 'close'
if url.startswith('https') and self.verify:
@@ -672,6 +667,17 @@ class Request(object):
return self.sent
def get_connection_for_url(self, url):
# Check to see if keep_alive is allowed.
try:
if self.config.get('keep_alive'):
conn = self._poolmanager.connection_from_url(url)
else:
conn = connectionpool.connection_from_url(url)
return conn
except LocationParseError as e:
raise InvalidURL(e)
class Response(object):
"""The core :class:`Response <Response>` object. All