redisを使用してパブリケーション・サブスクリプション・システムを迅速に構築する(python 3 x)

2083 ワード

パブリッシャーはトピックと値を含むメッセージを発行し、サブスクライバはどのトピックに興味があるか(どのトピックを購読するかを宣言し、listenに行く)を宣言し、各パブリッシャーはブロードキャストのみを担当し、誰が傍受しているのか分からない.
パブリッシャ:redis_pub.py
import redis
import random
conn = redis.Redis()
cats = ['siamese', 'persian', 'maine coon', 'norwegian forest']
hats = ['stovepipe', 'bowler', 'tam-o-shanter', 'fedora']
for msg in range(10):
    cat = random.choice(cats)
    hat = random.choice(hats)
    print('Publish: %s wears a %s' % (cat, hat))
    conn.publish(cat, hat)

次は購読者です:redis_sub.py
import redis
conn = redis.Redis()
topics = ['maine coon', 'persian']
sub = conn.pubsub()
sub.subscribe(topics)
for msg in sub.listen():
    if msg['type'] == 'message':
        cat = msg['channel']
        hat = msg['data']
        print('Subscribe: %s wears a %s' % (cat, hat))

実行:サブスクライバを実行してからパブリッシャを実行します.
python redis_sub.py
python redis_pub.py

サブスクライバは、すべてのパブリッシャメッセージの関連情報を常にキャプチャし、任意の数のサブスクライバとパブリッシャを使用できます.メッセージにサブスクライバがある場合、メッセージはすべてのサブスクライバが取得するまでredisサーバにとどまります.メッセージにサブスクライバがない場合、redisサーバから消えます(サブスクライバを起動してからパブリッシャを起動します).