python開発でredisのパブリケーションサブスクリプション機能を使用
1162 ワード
redisはデータを格納するだけでなく,メッセージミドルウェアとしてプロセス間の通信にも利用できることが知られており,最近のプロジェクトでも有用であり,ここで整理して記録として用いる.
まず、redisのpython依存をインストールします.
次に接続の作成
メッセージの公開、これは比較的に簡単で、テーマと情報を伝達します
メッセージ購読
まず、サブスクリプション・オブジェクトを取得し、トピックをサブスクリプションし、サブスクリプション・メッセージを待機します.
スレッドがブロックされていないサブスクリプションもあります.このサブスクリプション方式は実用的で、サブスクリプションチャンネルにメッセージが来ると、サブスクリプション時にバインドする方法が実行されます.コードは以下の通りです.
まず、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)