"... новый для использования ZeroMQ, поэтому я борюсь с некоторым кодом ."
Во-первых, добро пожаловать в искусство Zen-of-Zero.
В случае, если вы никогда не работали с ZeroMQ,
здесь можно с первого взгляда посмотреть на " ZeroMQ Принципы менее чем за Пять секунд"
, прежде чем углубляться в дальнейшие детали
Скважина , вам будет намного лучше, если вы начнете с первого понимания Правил игры , чем с обучения при сбоях (да, в отличие от того, что «подражает-евангелизации-гуру» насос в толпе, что «просто кодирования» достаточно - а это не так, для ведения действительно серьезного бизнеса)
Вот почему:
Если вы прочитали опубликованный API, он все равно будет сбить вас с толку большую часть времени, если у вас нет представления о структуре системы и вы не понимаете ее внутреннее и внешнее поведение (рамка Правила игры ) работы:
Опция ZMQ_LAST_ENDPOINT
должна извлекать последнюю конечную точку, привязанную для TCP и IP C транспортов. Возвращаемым значением будет строка в форме DSN ZMQ. Обратите внимание, что если хост TCP - INADDR_ANY
, обозначенный *
, то возвращаемый адрес будет 0.0.0.0
(для IPv4).
Это говорит о том, что точка, но не зная концепции, точка все еще скрыта от вас, чтобы увидеть ее.
Лучший следующий шаг
Если вы действительно серьезно настроены на с низкой задержкой распределенные вычисления , лучший следующий шаг после прочтения ссылки выше - прекратить кодирование и сначала уделить некоторое время чтению и пониманию сказочной книги Питера ХИНТЖЕНСА " Code Connected, Volume 1 " действительно необходимая статья для дальнейшего развития - безусловно, стоит всех ваших усилий и усилий.
Затем вы увидите почему это никогда не сработает:
import zmq.asyncio; ctx = zmq.asyncio.Context()
rcv_socket = ctx.socket( zmq.PULL )
rcv_socket.connect( "ipc:///tmp/test" )
socket_path = rcv_socket.getsockopt( zmq.LAST_ENDPOINT )
rcv_socket.bind( "ipc://%s" % socket_path )
, тогда как это может (но никакой обработки символа с нулевым символом в конце string
здесь все еще присутствует ... что само по себе является знаком плохой практики проектирования программного обеспечения и / или самодисциплины или и того, и другого):
import zmq.asyncio; ctx = zmq.asyncio.Context()
rcv_socket = ctx.socket( zmq.PULL )
rcv_socket.bind( "ipc:///tmp/test" )
socket_path = rcv_socket.getsockopt( zmq.LAST_ENDPOINT )
rcv_socket.connect( "ipc://%s" % socket_path )