我正在通过突发发送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(包括开始和结束)。