Как я могу установить hwm в шаблоне push / pull в zmq?
Я нашел похожий вопрос,ZeroMQ: HWM на PUSH не работает, но это не могло решить мою проблему.
Я хочу контролировать количество сообщений, которые помещаются в пуш-сокет, но это не работает и все еще помещает в очередь 1000 сообщений.
Поэтому я хочу знать, как установить hwm push-сокета. Заранее спасибо.
Моя среда: libzmq 4.0.4, pyzmq 14.1.0, python 3.3
Вот мой код:
server.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
import zmq
class TestPush(object):
def __init__(self):
self.ctx = zmq.Context()
random.seed()
def run(self):
task_snd = self.ctx.socket(zmq.PUSH)
task_snd.setsockopt(zmq.SNDHWM, 10)
task_snd.bind('tcp://*:53000')
while True:
workload = str(random.randint(1, 100))
task_snd.send(workload.encode('utf-8'))
print('Send {0}'.format(workload))
if __name__ == '__main__':
test_push = TestPush()
test_push.run()
client.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time
import random
import zmq
class TestPull(object):
def __init__(self):
self.ctx = zmq.Context()
def run(self):
task_rcv = self.ctx.socket(zmq.PULL)
task_rcv.setsockopt(zmq.RCVHWM, 1)
task_rcv.connect('tcp://localhost:53000')
while True:
msg = task_rcv.recv()
print('Receive msg: {0}'.format(msg))
time.sleep(random.randint(2, 3))
if __name__ == '__main__':
test_pull = TestPull()
test_pull.run()