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()