今さらPython3 (75) - パブサブ

この本の12章のネットワークのところを読み進めてます。入門書で分散コンピューティングとかいう単語が聞こえてくるのはいいね。

入門 Python 3

入門 Python 3

パブリッシュ/サブスクライブモデル

前の記事を書き終わって、Redisを落としたらもうRedisの出番が来たじゃないですか。Redisでの簡単な例からスタートするみたい。

まずは、subを起動。

$ python3 redis_sub.py

ただし、このままでは何も起こらないので、pubを別のシェルウィンドウで起動。

$ python3 redis_pub.py
Publish: maine coon wears a stovepipe
Publish: persian wears a fedora
Publish: persian wears a tam-o-shanter
Publish: persian wears a fedora
Publish: siamese wears a bowler
Publish: siamese wears a tam-o-shanter
Publish: siamese wears a fedora
Publish: siamese wears a tam-o-shanter
Publish: siamese wears a tam-o-shanter
Publish: maine coon wears a stovepipe

ほぼ同時に、subを起動した側のウィンドウにも結果が出るはずだ。

$ python3 redis_sub.py
Subscribe: b'maine coon' wears a b'stovepipe'
Subscribe: b'persian' wears a b'fedora'
Subscribe: b'persian' wears a b'tam-o-shanter'
Subscribe: b'persian' wears a b'fedora'
Subscribe: b'maine coon' wears a b'stovepipe'

ちなみに、subは起動しっぱなしなので、pubをさらに動かすと結果が追加される。sub側をctrl+cで止めてから、pubを実行して、そのあとにsubを起動し直したとしても、subが拾うのは、あくまでsub起動後にpubが実行された場合のみだった。

ZeroMQ

まずはインストールしよう。

$ pip3 install pyzmq
Collecting pyzmq
  Downloading pyzmq-15.1.0-cp34-cp34m-macosx_10_6_intel.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 431kB/s 
Installing collected packages: pyzmq
Successfully installed pyzmq-15.1.0

ソースコードを用意して、

subから実行。もちろん、2行目以降はpub起動後に表示されたもの。

$ python3 zmq_sub.py
Subscribe: maine coon wears stovepipe
Subscribe: maine coon wears stovepipe
Subscribe: persian wears stovepipe
Subscribe: persian wears bowler

後からpubを実行。

$ python3 zmq_pub.py
Publish: maine coon wears a stovepipe
Publish: norwegian forest wears a stovepipe
Publish: siamese wears a tam-o-shanter
Publish: norwegian forest wears a fedora
Publish: maine coon wears a stovepipe
Publish: persian wears a stovepipe
Publish: siamese wears a stovepipe
Publish: persian wears a bowler
Publish: norwegian forest wears a tam-o-shanter
Publish: siamese wears a stovepipe

そのほかのパブサブツールもいつかお世話になるかも知れないのでチェック。

RabbitMQ - Messaging that just works
github.com
Welcome to PyPubSub’s Home Page! — PyPubSub v3.3 Documentation

(つづく)