From 2161c87d865d4a49727f1930adead49387d87e92 Mon Sep 17 00:00:00 2001 From: Honza Kral Date: Wed, 21 Aug 2013 00:18:18 +0200 Subject: [PATCH] Make thrift an optional dependency --- elasticsearch/connection.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/elasticsearch/connection.py b/elasticsearch/connection.py index e5e9f317..6710a844 100644 --- a/elasticsearch/connection.py +++ b/elasticsearch/connection.py @@ -8,6 +8,17 @@ try: except ImportError: from urllib.parse import urlencode +try: + from .esthrift import Rest + from .esthrift.ttypes import Method, RestRequest + + from thrift.transport import TTransport, TSocket + from thrift.protocol import TBinaryProtocol + from thrift.Thrift import TException + THRIFT_AVAILABLE = True +except ImportError: + THRIFT_AVAILABLE = False + from .exceptions import TransportError, HTTP_EXCEPTIONS, ConnectionError logger = logging.getLogger('elasticsearch') @@ -212,17 +223,14 @@ class MemcachedConnection(Connection): return status, response -from .esthrift.ttypes import Method, RestRequest -from .esthrift import Rest -from thrift.Thrift import TException -from thrift.transport import TTransport, TSocket -from thrift.protocol import TBinaryProtocol - class ThriftConnection(Connection): transport_schema = 'thrift' def __init__(self, host='localhost', port=9500, framed_transport=False, **kwargs): + if not THRIFT_AVAILABLE: + raise ImproperlyConfigured("Thrift is not available.") + super(ThriftConnection, self).__init__(host=host, port=port, **kwargs) socket = TSocket.TSocket(host, port) socket.setTimeout(self.timeout * 1000.0)