From d3d0b4f0b59eff77415da0822ae7eb18e38ba26f Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sun, 5 Jun 2016 14:35:33 +0300 Subject: [PATCH] umqtt.robust: Add universal with_retry method, and publish_() using it. This method uses more memory though. --- umqtt.robust/umqtt/robust.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/umqtt.robust/umqtt/robust.py b/umqtt.robust/umqtt/robust.py index 7ee40e02..582628c2 100644 --- a/umqtt.robust/umqtt/robust.py +++ b/umqtt.robust/umqtt/robust.py @@ -26,6 +26,18 @@ class MQTTClient(simple.MQTTClient): i += 1 self.delay(i) + def with_retry(self, meth, *args, **kwargs): + while 1: + try: + return meth(*args, **kwargs) + except OSError as e: + print("%r" % e) + time.sleep(0.5) + self.reconnect() + + def publish_(self, *args, **kwargs): + return self.with_retry(super().publish, *args, **kwargs) + def publish(self, topic, msg, retain=False, qos=0): while 1: try: