前から面白そうと思っていたRedisのPub/Sub機能。
redis-pyでどう実装すれば使えるか確認してみた。
■Pub/Subについて
http://ja.wikipedia.org/wiki/出版-購読型モデル
■pub.py
■sub.py
■実行方法・実行結果
(ターミナル1-準備)
(ターミナル2-PUBLISH)
(ターミナル1-受信)
redis-pyでどう実装すれば使えるか確認してみた。
■Pub/Subについて
http://ja.wikipedia.org/wiki/出版-購読型モデル
■pub.py
from redis import StrictRedis def publish(channel,msg): """ redis-pyにはPUBLISHするためのメソッドがないので、 Redisのコマンドをそのまま実行する為のクラスを使う。 """ sr=StrictRedis() """ 第1引数にRedisのコマンド、第2引数以降は そのコマンドの引数をそのままセット """ sr.execute_command("PUBLISH",channel,msg) if __name__=="__main__": # チャネル"hoge"に"Hello"というメッセージを出版(Publish) publish("hoge","Hello")
■sub.py
from redis import Redis def listen(channel): r=Redis() ps=r.pubsub() ps.subscribe(channel) while True: for i in ps.listen(): print i["data"] if __name__=="__main__": # チャネル"hoge"を購読(Subscribe) listen("hoge")
■実行方法・実行結果
(ターミナル1-準備)
[user@localhost ~]# python sub.py 1 # => チャネルの購読開始
(ターミナル2-PUBLISH)
[user@localhost ~]# python pub.py
(ターミナル1-受信)
[user@localhost ~]# python sub.py 1 # => チャネルの購読開始 Hello # => メッセージの受信
コメント
コメントを投稿