summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2014-06-02 17:18:24 +0100
committerAsk Solem <ask@celeryproject.org>2014-06-02 17:18:24 +0100
commit1dddd80a6e1f2c6d1f654567266a45cd5ba90a1a (patch)
treef975094e916a5cd72ab25eb89f27d6b6650e4cd1
parent3624a37170847d1872b30bd863add51983a54599 (diff)
downloadkombu-1dddd80a6e1f2c6d1f654567266a45cd5ba90a1a.tar.gz
beanstalk can now be imported without beanstalkc dependency
-rw-r--r--kombu/transport/beanstalk.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/kombu/transport/beanstalk.py b/kombu/transport/beanstalk.py
index 9dff8b49..4e73bbca 100644
--- a/kombu/transport/beanstalk.py
+++ b/kombu/transport/beanstalk.py
@@ -10,7 +10,6 @@ Beanstalk transport.
"""
from __future__ import absolute_import
-import beanstalkc
import socket
from anyjson import loads, dumps
@@ -20,6 +19,11 @@ from kombu.utils.encoding import bytes_to_str
from . import virtual
+try:
+ import beanstalkc
+except ImportError: # pragma: no cover
+ beanstalkc = None # noqa
+
DEFAULT_PORT = 11300
__author__ = 'David Ziegler <david.ziegler@gmail.com>'
@@ -127,16 +131,25 @@ class Transport(virtual.Transport):
default_port = DEFAULT_PORT
connection_errors = (
virtual.Transport.connection_errors + (
- socket.error, beanstalkc.SocketError, IOError)
+ socket.error, IOError,
+ getattr(beanstalkc, 'SocketError', None),
+ )
)
channel_errors = (
virtual.Transport.channel_errors + (
socket.error, IOError,
- beanstalkc.SocketError,
- beanstalkc.BeanstalkcException)
+ getattr(beanstalkc, 'SocketError', None),
+ getattr(beanstalkc, 'BeanstalkcException', None),
+ )
)
driver_type = 'beanstalk'
driver_name = 'beanstalkc'
+ def __init__(self, *args, **kwargs):
+ if beanstalkc is None:
+ raise ImportError(
+ 'Missing beanstalkc library (pip install beanstalkc)')
+ super(Transport, self).__init__(*args, **kwargs)
+
def driver_version(self):
return beanstalkc.__version__