From 114afb09ffab0a1a1814727e718f18e70bf4dd74 Mon Sep 17 00:00:00 2001 From: Rick Rongen Date: Fri, 28 Aug 2020 13:34:29 +0200 Subject: [PATCH] feat: quit gracefully redis --- worker.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/worker.py b/worker.py index 0ab81f2..1d5946a 100644 --- a/worker.py +++ b/worker.py @@ -1,4 +1,5 @@ import sched +import time from threading import Thread import json @@ -14,12 +15,16 @@ INTERVAL_IMAGE = 0.05 # 20/s class EventListener(Thread): def __init__(self): super(EventListener, self).__init__() + self.keep_running = True self.dbcon = Redis() self.pubsub = self.dbcon.pubsub() self.pubsub.subscribe(['move', 'look']) def run(self) -> None: - for item in self.pubsub.listen(): + while self.keep_running: + item = self.pubsub.get_message() + if not item: + time.sleep(0.01) channel = item['channel'].decode() data = item['data'] if not isinstance(data, bytes): @@ -29,9 +34,10 @@ class EventListener(Thread): self.handle_message(channel, data) except ValueError: pass # todo + self.pubsub.close() def stop(self): - self.pubsub.close() + self.keep_running = False def handle_message(self, channel: str, data: bytes): data_dict = json.loads(data.decode())