python開発でredisのパブリケーションサブスクリプション機能を使用

1162 ワード

redisはデータを格納するだけでなく,メッセージミドルウェアとしてプロセス間の通信にも利用できることが知られており,最近のプロジェクトでも有用であり,ここで整理して記録として用いる.
まず、redisのpython依存をインストールします.
pip install redis

次に接続の作成
import redis
rc = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)

メッセージの公開、これは比較的に簡単で、テーマと情報を伝達します
rc.publish("channel", "hahahaha")

メッセージ購読
まず、サブスクリプション・オブジェクトを取得し、トピックをサブスクリプションし、サブスクリプション・メッセージを待機します.
ps = rc.pubsub()

ps.subscribe("111")
#     ,     ,     listen         
for item in ps.listen():
    print(item)

#      ,    get_message()  
while True:
    item = ps.get_message()
    if item:
        print(item)
    time.sleep(0.1)

スレッドがブロックされていないサブスクリプションもあります.このサブスクリプション方式は実用的で、サブスクリプションチャンネルにメッセージが来ると、サブスクリプション時にバインドする方法が実行されます.コードは以下の通りです.
import redis
import time

def handle(info):
    print(info)


rc = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
ps = rc.pubsub()

ps.subscribe(**{"123": handle})
ps.subscribe(**{"234": handle})
ps.run_in_thread(0.03)