У меня есть сервер, который иногда отправляет сообщения всем подписчикам. С чем-то я имею в виду, может быть, один раз в месяц. Возможно, однажды ему нужно отправить 100, и после этого он проводит несколько месяцев, не отправляя больше. Но мне нужно, чтобы это можно было сделать.Автоматическое повторное подключение к абоненту zmq
До сих пор у меня есть издатель на python, который отправляет кадры и подписчика на питоне тоже на каждом конечном устройстве. Сценарий в конце устройства, кажется, отключается через некоторое время. В моих тестах я могу отправить сообщения в течение некоторого времени, но если я отправлю их для отправки, скажем, 10 минут, следующее сообщение не будет получено.
Есть ли способ, позволяющий абоненту время от времени посылать пульс или что-то в этом роде? Или обнаружить разъединение и снова подключиться, как только это возможно? Я не прочь пропустить пакет, потому что у меня есть контроль над сообщением, поэтому он получит его в течение следующей минуты, если сервер не получит ответа.
У меня есть этот код для подключения к серверу:
portSubOuter = "6100"
context = zmq.Context()
socketOuter = context.socket(zmq.SUB)
socketOuter.connect("tcp://my_domain_url:%s"% portSubOuter)
socketOuter.setsockopt(zmq.SUBSCRIBE, '')
И это мой код следующим образом:
macRecv = socketOuter.recv()
print "Packet for mac: %s"%macRecv
if macRecv == repr(myMACOuter):
more = True
while more:
part_received = socketOuter.recv()
part.append(part_received)
more = socketOuter.getsockopt(zmq.RCVMORE)
....
Мне нужно реализовать сердцебиений в стороне издателя ли? Как отправить сообщение каждые 2 минуты или около того?
Мне нужно подождать до воскресенья, чтобы проверить это. Но я попытаюсь реализовать его в python. Почти наверняка есть что-то подобное. Спасибо. Я обновляю свой пост, как только я его реализую с окончательным кодом. – Biribu
@Biribu Это работает для вас? – jab