3
我正在嘗試使用zero-mq.My的要求非常簡單。我希望能夠在網絡中的兩個對等體之間進行通信。我遇到了此程序書中的例子。zero-mq:socket.recv()調用阻塞
$ pub_server.py
import zmq
import random
import sys
import time
port = "5556"
if len(sys.argv) > 1:
port = sys.argv[1]
int(port)
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:%s" % port)
while True:
topic = random.randrange(9999,10005)
messagedata = random.randrange(1,215) - 80
print "%d %d" % (topic, messagedata)
socket.send("%d %d" % (topic, messagedata))
time.sleep(1)
$sub_client.py
import sys
import zmq
port = "5556"
if len(sys.argv) > 1:
port = sys.argv[1]
int(port)
# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)
print "Collecting updates from weather server..."
socket.connect ("tcp://localhost:%s" % port)
# Subscribe to zipcode, default is NYC, 10001
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
# Process 5 updates
total_value = 0
for update_nbr in range (5):
string = socket.recv()
topic, messagedata = string.split()
total_value += int(messagedata)
print ('{} {}'.format(topic, messagedata))
print('Avg data value for topic {} was {}'.format(topicfilter, (total_value/update_nbr)))
我有這種模式的問題是,
string = socket.recv()
塊,直到我收到一個message.I不想這事發生了,我暈t消息在接收方排隊,這樣我就可以把它從隊列中排除(或類似的東西)
在zero-mq中有一些模型允許這麼做嗎?
使用'zmq.Poller':HTTP: //stackoverflow.com/a/7540299/202775 – tuomur 2014-09-24 10:07:14