redisを使用してパブリケーション・サブスクリプション・システムを迅速に構築する(python 3 x)
パブリッシャーはトピックと値を含むメッセージを発行し、サブスクライバはどのトピックに興味があるか(どのトピックを購読するかを宣言し、listenに行く)を宣言し、各パブリッシャーはブロードキャストのみを担当し、誰が傍受しているのか分からない.
パブリッシャ:redis_pub.py
次は購読者です:redis_sub.py
実行:サブスクライバを実行してからパブリッシャを実行します.
サブスクライバは、すべてのパブリッシャメッセージの関連情報を常にキャプチャし、任意の数のサブスクライバとパブリッシャを使用できます.メッセージにサブスクライバがある場合、メッセージはすべてのサブスクライバが取得するまでredisサーバにとどまります.メッセージにサブスクライバがない場合、redisサーバから消えます(サブスクライバを起動してからパブリッシャを起動します).
パブリッシャ: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サーバから消えます(サブスクライバを起動してからパブリッシャを起動します).