summaryrefslogtreecommitdiff
path: root/kombu/transport/zmq.py
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2013-10-03 15:04:29 +0100
committerAsk Solem <ask@celeryproject.org>2013-10-03 15:04:29 +0100
commit138bf3f822f6b5b39390febca2d8cdef109941ae (patch)
tree7faa3fc70d724d48d4396eacfefe856cbbe02f32 /kombu/transport/zmq.py
parentba3171352a2c61597864dad37c94af8c5024bbd1 (diff)
downloadkombu-138bf3f822f6b5b39390febca2d8cdef109941ae.tar.gz
Zmq: Must use finally to clear timeout
Diffstat (limited to 'kombu/transport/zmq.py')
-rw-r--r--kombu/transport/zmq.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/kombu/transport/zmq.py b/kombu/transport/zmq.py
index 488410ff..e6b8a48b 100644
--- a/kombu/transport/zmq.py
+++ b/kombu/transport/zmq.py
@@ -135,13 +135,16 @@ class Client(object):
self.vent.connect(endpoint)
def get(self, queue=None, timeout=None):
+ sink = self.sink
try:
- original_timeout = self.sink.RCVTIMEO
- if timeout:
- self.sink.RCVTIMEO = timeout
- result = self.sink.recv()
- self.sink.RCVTIMEO = original_timeout
- return result
+ if timeout is not None:
+ prev_timeout, sink.RCVTIMEO = sink.RCVTIMEO, timeout
+ try:
+ return sink.recv()
+ finally:
+ sink.RCVTIMEO = prev_timeout
+ else:
+ return sink.recv()
except ZMQError as exc:
if exc.errno == zmq.EAGAIN:
raise socket.error(errno.EAGAIN, exc.strerror)
@@ -235,6 +238,7 @@ class Channel(virtual.Channel):
class Transport(virtual.Transport):
Channel = Channel
+ can_parse_url = True
default_port = DEFAULT_PORT
driver_type = 'zeromq'
driver_name = 'zmq'