From d328998b3696cd568b866f363d6fbd13afce1a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Kr=C3=A1l?= Date: Mon, 22 Jun 2015 20:39:58 +0200 Subject: [PATCH] Add keep_alive headers by default to Urllib3HttpConnection --- elasticsearch/connection/http_urllib3.py | 4 ++-- test_elasticsearch/test_connection.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/elasticsearch/connection/http_urllib3.py b/elasticsearch/connection/http_urllib3.py index c729ae1a..eddb0b67 100644 --- a/elasticsearch/connection/http_urllib3.py +++ b/elasticsearch/connection/http_urllib3.py @@ -28,11 +28,11 @@ class Urllib3HttpConnection(Connection): maxsize=10, **kwargs): super(Urllib3HttpConnection, self).__init__(host=host, port=port, **kwargs) - self.headers = {} + self.headers = urllib3.make_headers(keep_alive=True) if http_auth is not None: if isinstance(http_auth, (tuple, list)): http_auth = ':'.join(http_auth) - self.headers = urllib3.make_headers(basic_auth=http_auth) + self.headers.update(urllib3.make_headers(basic_auth=http_auth)) pool_class = urllib3.HTTPConnectionPool kw = {} diff --git a/test_elasticsearch/test_connection.py b/test_elasticsearch/test_connection.py index ec5bf800..7795b541 100644 --- a/test_elasticsearch/test_connection.py +++ b/test_elasticsearch/test_connection.py @@ -35,17 +35,24 @@ class TestUrllib3Connection(TestCase): con = Urllib3HttpConnection(timeout=42) self.assertEquals(42, con.timeout) + def test_keep_alive_is_on_by_default(self): + con = Urllib3HttpConnection() + self.assertEquals({'connection': 'keep-alive'}, con.headers) + def test_http_auth(self): con = Urllib3HttpConnection(http_auth='username:secret') - self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0'}, con.headers) + self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0', + 'connection': 'keep-alive'}, con.headers) def test_http_auth_tuple(self): con = Urllib3HttpConnection(http_auth=('username', 'secret')) - self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0'}, con.headers) + self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0', + 'connection': 'keep-alive'}, con.headers) def test_http_auth_list(self): con = Urllib3HttpConnection(http_auth=['username', 'secret']) - self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0'}, con.headers) + self.assertEquals({'authorization': 'Basic dXNlcm5hbWU6c2VjcmV0', + 'connection': 'keep-alive'}, con.headers) def test_uses_https_if_specified(self): with warnings.catch_warnings(record=True) as w: