2015-03-11 4 views
0

я подключаю разъем ДИЛЕРА к роутеру с помощью:Имеются ли последствия для повторного подключения гнезда ZMQ с тем же идентификатором?

socket = context.socket(zmq.DEALER) 
socket.setsockopt(zmq.IDENTITY, 'id') 
socket.connect('tcp://myhost:3456') 

а часто повторного подключения будет по телефону:

socket.close() 
socket = context.socket(zmq.DEALER) 
socket.setsockopt(zmq.IDENTITY, 'id') 
socket.connect('tcp://myhost:3456') 

Я использую тот же id каждый раз, и было интересно, если есть являются ли какие-либо последствия для этого? Я также иногда видели следующее сообщение об ошибке в консоли и не уверен, что это связано:

Invalid argument (bundled/zeromq/src/stream_engine.cpp:831) 

ответ

1

Могу ли я спросить, почему вы закрываете и повторно открывать сокет так часто? Особенно, если, как в вашем коде здесь, вы немедленно вновь открываете розетку? Как правило, для этого не должно быть очень мало оснований.

Кроме того, при повторном использовании одного и того же идентификатора не должно быть плохого эффекта, если предыдущий сокет для его использования больше не подключен ... Согласно the documentation, если разъем Router еще не отказался от его подключения к предыдущему сокету (который может или не может быть проблемой на практике), вы определяете, как будет работать ваш сокет Router с опцией ZMQ_ROUTER_HANDOVER. Он либо отклонит новое соединение, либо передаст соединение с новым сокетом ... Я предполагаю, что второе - это то, что вам нужно.

Я бы не подумал, что отклоненное соединение приведет к ошибке, которую вы видите, хотя я полагаю, что это возможно в зависимости от того, какой код следует тому, что вы здесь предоставили. Если вы считаете, что это связано, просто убедитесь, что вы проверяете успешное соединение, прежде чем пытаться использовать это соединение ... Я не знаю, не связано ли жестка pyzmq (или сама ZMQ), или если вам нужно проверить ее на отклоненное соединение.

 Смежные вопросы

  • Нет связанных вопросов^_^