From 31d7869842c516443accfc7702798913177bd428 Mon Sep 17 00:00:00 2001 From: Ask Solem Date: Thu, 23 Aug 2012 15:56:45 +0100 Subject: [PATCH] Resolve amqp alias at runtime --- kombu/connection.py | 5 +++-- kombu/transport/__init__.py | 22 +++++++++------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/kombu/connection.py b/kombu/connection.py index 448129012..c10a025e8 100644 --- a/kombu/connection.py +++ b/kombu/connection.py @@ -24,7 +24,7 @@ # (Issue #112) from kombu import exceptions from .log import get_logger -from .transport import AMQP_ALIAS, get_transport_cls +from .transport import get_transport_cls, supports_librabbitmq from .utils import cached_property, retry_over_time from .utils.compat import OrderedDict, LifoQueue as _LifoQueue from .utils.url import parse_url @@ -133,6 +133,8 @@ def __init__(self, hostname='localhost', userid=None, def _init_params(self, hostname, userid, password, virtual_host, port, insist, ssl, transport, connect_timeout, login_method, heartbeat): + if transport == 'amqp' and supports_librabbitmq(): + transport = 'librabbitmq' self.hostname = hostname self.userid = userid self.password = password @@ -403,7 +405,6 @@ def clone(self, **kwargs): def _info(self): transport_cls = self.transport_cls or 'amqp' - transport_cls = {AMQP_ALIAS: 'amqp'}.get(transport_cls, transport_cls) D = self.transport.default_connection_params hostname = self.hostname or D.get('hostname') if self.uri_prefix: diff --git a/kombu/transport/__init__.py b/kombu/transport/__init__.py index 69f943e05..7f2173620 100644 --- a/kombu/transport/__init__.py +++ b/kombu/transport/__init__.py @@ -12,19 +12,17 @@ import sys -from kombu.syn import detect_environment +from kombu.syn import _detect_environment -DEFAULT_TRANSPORT = 'amqp' -AMQP_TRANSPORT = 'kombu.transport.amqplib.Transport' -AMQP_ALIAS = 'librabbitmq' -if detect_environment() == 'default': - try: - import librabbitmq # noqa - AMQP_TRANSPORT = 'kombu.transport.librabbitmq.Transport' # noqa - AMQP_ALIAS = 'amqp' # noqa - except ImportError: - pass +def supports_librabbitmq(): + if _detect_environment() == 'default': + try: + import librabbitmq # noqa + return True + except ImportError: + pass + return False def _ghettoq(name, new, alias=None): @@ -48,7 +46,6 @@ def __inner(): TRANSPORT_ALIASES = { - 'amqp': AMQP_TRANSPORT, 'pyamqp': 'kombu.transport.pyamqp.Transport', 'amqplib': 'kombu.transport.amqplib.Transport', 'librabbitmq': 'kombu.transport.librabbitmq.Transport', @@ -106,7 +103,6 @@ def get_transport_cls(transport=None): the alias table will be consulted. """ - transport = transport or DEFAULT_TRANSPORT if transport not in _transport_cache: _transport_cache[transport] = _get_transport_cls(transport) return _transport_cache[transport]