为什么在突发发送时zmq(python)会丢弃消息?

时间:2019-05-31 05:16:58

标签: python zeromq

我正在通过突发发送100000条消息来测试zmq性能。客户端对收到的消息进行计数并测量所用的时间。 在我的本地计算机上,客户端收到了每条消息,但是在VPS(我尝试了几种不同的模型)上,一些消息被丢弃了。 不确定VPS有问题还是zmq有问题。

发件人:

import random
import cbor
import time

context = zmq.Context()  
socket = context.socket(zmq.PUB)  
socket.bind("tcp://127.0.0.1:27700")
time.sleep(2)

socket.send_multipart([b'test.latency', b'start'])
for i in range(100000):
    s = str(random.random())
    socket.send_multipart([b'test.latency', s.encode()])
socket.send_multipart([b'test.latency', b'end'])

接收器:

import zmq

context = zmq.Context()  
socket = context.socket(zmq.SUB)  
socket.connect("tcp://127.0.0.1:27700")  
socket.setsockopt(zmq.SUBSCRIBE, 'test.latency'.encode())

s = None
count = 0
while True:
    try:
        topic, msg = socket.recv_multipart()
        count += 1
        if msg == b'start': s = datetime.datetime.now()
        if msg == b'end': break
    except Exception: pass

print(count) # should be 100002
print((datetime.datetime.now() - s).total_seconds())

接收方打印的正确计数应该是100002(包括开始和结束)。

0 个答案:

没有答案
相关问题