From 9806caca85ab65209feb0b94c6b64f7f75286ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lucas?= Date: Wed, 31 May 2017 22:25:30 +0200 Subject: [PATCH] Enhance the proper stopping. Still [Errno 9] Bad file descriptor happen sometimes --- src/main.py | 9 ++++++++- src/mqtt.py | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main.py b/src/main.py index 292323e..a5e7b38 100644 --- a/src/main.py +++ b/src/main.py @@ -17,6 +17,8 @@ def process_gateway_messages(gateway, client, stop_event): while not stop_event.is_set(): try: packet = gateway._queue.get() + if packet is None: + continue _LOGGER.debug("data from queuee: " + format(packet)) sid = packet.get("sid", None) @@ -67,6 +69,8 @@ def process_mqtt_messages(gateway, client, stop_event): while not stop_event.is_set(): try: data = client._queue.get() + if data is None: + continue _LOGGER.debug("data from mqtt: " + format(data)) sid = data.get("sid", None) @@ -81,8 +85,11 @@ def process_mqtt_messages(gateway, client, stop_event): def exit_handler(signal, frame): print('Exiting') stop_event.set() - gateway.stop() + t3.join() client.disconnect() + t2.join() + gateway.stop() + t1.join() if __name__ == "__main__": _LOGGER.info("Loading config file...") diff --git a/src/mqtt.py b/src/mqtt.py index 9a0b774..0985c41 100644 --- a/src/mqtt.py +++ b/src/mqtt.py @@ -57,6 +57,7 @@ class Mqtt: def disconnect(self): self._client.disconnect() + self._queue.put(None) def subscribe(self, model="+", name="+", prop="+", command=None): topic = self.prefix + "/" + model + "/" + name + "/" + prop