2013-12-18 13 views
6

おそらく紛失しているものがありますが、公式のPyzmqパッケージ(https://github.com/zeromq/pyzmq)を使用してPythonで動作する単純なpub-subの例は得られません。ZeroMQ PubSubが動作しないw Pyzmq

私は最新のZeroMQ安定版リリース4.0.3を使用しています。簡単な例をcで簡単に手に入れることができます。私はMacとUbuntuマシンの両方で試しました。あなたが起動すると仮定すると

sub.py

import zmq 

ctx = zmq.Context() 
s = ctx.socket(zmq.SUB) 
s.connect("tcp://127.0.0.1:5567") 
s.setsockopt(zmq.SUBSCRIBE,'') 

while True: 
    print 'waiting...' 
    msg = s.recv() 
    print 'received:', msg 

pub.py

import zmq 

ctx = zmq.Context() 
s = ctx.socket(zmq.PUB) 
s.bind("tcp://*:5567") 

for i in range(100): 
    s.send("test") 

答えて

11

:ここ

は私のコードです)、私はこの上の任意の入力を楽しみにして最初にパブリッシャ、サブスクライバが永久にパブリッシャに接続しようとします。サイト運営者が表示されると、加入者側の接続手順に時間がかかり、サイト運営者は実際にこのことに気にしません。できるだけ早くメッセージで起動しますが、加入者は接続を確立しようとしています。接続が確立され、加入者が受信準備が整うと、発行者は既に作業を終了しています。

ソリューション:

import zmq 
import time 

ctx = zmq.Context() 
s = ctx.socket(zmq.PUB) 
s.bind("tcp://*:5567") 

time.sleep(1) 
for i in range(100): 
    s.send("test") 
+0

をそして、それはそれだった:パブリッシャーコードに睡眠を追加することにより、加入者にいくつかの時間を与えます。ありがとうございました! – Stephen

+2

なぜ@Stephenは言うとおり、Cのバージョンは動作していますか?そして、多くの出版社を1人の加入者に結びつける能力を維持しながら、このハッキングを取り除く方法はありますか? (alas、no zmq.PAIR') – Pastafarianist

+0

かなり醜い解決策:( – DataGreed

関連する問題