Redis Pub/Sub 예제
22 Dec 2021 | Python RedisRedis Pub/Sub 예제
Redis 설치
Redis는 Docker를 이용해서 설치해줍니다.
docker run --name redis -d -p 6379:6379 redis
subscriber.py
import redis r = redis.Redis(host="localhost", port=6379, db=0) s = r.pubsub() s.subscribe("snowdeer_channel") while True: print("waiting message...") res = s.get_message(timeout=5) if res is not None: print(f"res: {res}")
publisher.py
import redis import datetime r = redis.Redis(host="localhost", port=6379, db=0) msg = f"[{datetime.datetime.now()}] hello, snowdeer +___+" r.publish(channel="snowdeer_channel", message=msg) print(f"Message is sent !!\n{msg}")
여러 개의 Topic을 Subscription 하는 예제
import redis def main(): r = redis.Redis(host="localhost", port=6379, db=0) s = r.pubsub() s.subscribe('chat') s.subscribe('event') while True: print('waiting message...') res = s.get_message(timeout=5) if res is not None: if res['type'] == 'message': handle_message(res['channel'], res['data']) def handle_message(topic: str, message: str): if topic == 'chat': handle_message_for_chat(message) elif topic == 'event': handle_message_for_event(message) def handle_message_for_chat(message: str): print(f'chat message: {message}') def handle_message_for_event(message: str): print(f'event message: {message}') if __name__ == '__main__': main()