綺麗に止まられるRedisのSubscriber
PythonでThreadを起こしてRedisをSubscribeするとき
下記のように書いておけば、親スレッド停止時にstopを呼んであげるだけで綺麗に止められる。
class Subscriber():
def __init__(self):
self.stop_event = threading.Event()
kvs = redis.StrictRedis(host='localhost', port=6379, db=0)
self.pubsub = kvs.pubsub()
self.pubsub.subscribe('channel')
self.thread = threading.Thread(target=self.target)
self.thread.daemon = True
self.thread.start()
def target(self):
while not self.stop_event.is_set():
for message in self.pubsub.listen():
print(message)
def stop(self):
self.stop_event.set()
self.pubsub.unsubscribe()
self.thread.join()
ググっても、良いサンプルが無かったので書き残しておくのでした。
スレッド操作はxeno1991さんの記事を参考にしました。
https://qiita.com/xeno1991/items/b207d55a413664513e5f
Author And Source
この問題について(綺麗に止まられるRedisのSubscriber), 我々は、より多くの情報をここで見つけました https://qiita.com/tnoho/items/d62772d5bc173f1c60d5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .