前から面白そうと思っていた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 # => メッセージの受信
コメント
コメントを投稿