diff --git a/coolamqp/cluster.py b/coolamqp/cluster.py index 8ac7270d7df099312fede8b0a9f532e0d72f18be..bd85db9720f9283e569e98ac38a5e92c7126276f 100644 --- a/coolamqp/cluster.py +++ b/coolamqp/cluster.py @@ -66,6 +66,8 @@ class Cluster(object): self.backend = backend self.node_to_connect_to = itertools.cycle(nodes) + self.connected = False #: public, is connected to broker? + from .handler import ClusterHandlerThread self.thread = ClusterHandlerThread(self) diff --git a/coolamqp/handler.py b/coolamqp/handler.py index c74581b337b8b642a2b8c25d5b3aaef55dfd7245..b6cb3c7a22648953d4fa302033acb64f8a67b441 100644 --- a/coolamqp/handler.py +++ b/coolamqp/handler.py @@ -65,6 +65,7 @@ class ClusterHandlerThread(threading.Thread): except ConnectionFailedError as e: # a connection failure happened :( logger.warning('Connecting to %s failed due to %s', node, repr(e)) + self.cluster.connected = False if self.backend is not None: self.backend.shutdown() self.backend = None # good policy to release resources before you sleep @@ -78,6 +79,7 @@ class ClusterHandlerThread(threading.Thread): else: exponential_backoff_delay = 60 else: + self.cluster.connected = True self.event_queue.put(ConnectionUp()) break # we connected :) @@ -140,6 +142,7 @@ class ClusterHandlerThread(threading.Thread): except ConnectionFailedError as e: logger.warning('Connection to broker lost') + self.cluster.connected = True self.event_queue.put(ConnectionDown()) self._reconnect()