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: