import json from services.rediscache import redis from servies.notifier import notification_service # Каналы для прослушивания channels = ["reaction", "shout"] pubsubs = [] def create_notification_channel(redis_conn, channel_name): pubsub = redis_conn.pubsub() pubsub.subscribe(channel_name) return pubsub def close_notification_channel(pubsub): pubsub.unsubscribe() pubsub.close() def start(): # Подписка на каналы pubsubs = [create_notification_channel(redis_conn, channel) for channel in channels] try: # Бесконечный цикл прослушивания while True: for pubsub in pubsubs: msg = pubsub.get_message() notification_service.handle_reaction(msg["data"]) except Exception: pass finally: # Отписка от каналов при завершении for pubsub in pubsubs: close_notification_channel(pubsub) def stop(): for pubsub in pubsubs: close_notification_channel(pubsub)