С PyZMQ, когда я пытаюсь создать сокет внутри функции и отправить с ним сообщение, сообщение никогда не будет получено.
context = zmq.Context()
def sender():
sock = context.socket(zmq.PUB)
sock.connect("tcp://localhost:44444")
sock.send("status good")
sender()
Однако, если я создаю сокет в глобальной области, он работает:
context = zmq.Context()
sock = context.socket(zmq.PUB)
sock.connect("tcp://localhost:44444")
sock.send("status good")
Что еще более странно, так это то, что проверка событий в нижележащем файловом дескрипторе показывает, что событие действительно произошло. Однако проверка значения опроса с помощью getsockopt(EVENTS)
указывает на то, что из сокета нечего читать.
Я попытался сделать функцию спящей на несколько секунд перед выходом, чтобы у подписчика было достаточно времени, чтобы прочитать сообщение до того, как сокет будет уничтожен. Но это ничего не меняет.