Я хочу ввести zmq
на основе входа в программу Python. Когда я столкнулся с ошибками ZMQError: Address in use
, я решил сварить это до простого доказательства концепции. Я смог запустить откидную версию, но не получать записи в журнале. Это код, который я использовал:Использование обработчика регистрации pyzmq в python
журнала Издательство:
import time
import logging
from zmq.log import handlers as zmqHandler
logger = logging.getLogger('myapp')
logger.setLevel(logging.ERROR)
zmqH=zmqHandler.PUBHandler('tcp://127.0.0.1:12344')
logger.addHandler(zmqH)
for i in range(50):
logger.error('error test...')
print "Send error #%s" % (str(i))
time.sleep(1)
Результат
Send error #0
Send error #1
Send error #2
Send error #3
Send error #4
...
Вход Subscriber:
Результат
Listening to publishers...
Таким образом, абонент заблокирован по вызову socket.recv()
. Я начал издавать и подписываться в разных консолях. Оба процесса появляются, когда я использую netstat:
C:\>netstat -a -n -o | findstr 12344
TCP 127.0.0.1:12344 0.0.0.0:0 LISTEN 1336
TCP 127.0.0.1:12344 127.0.0.1:51937 ESTABLISHED 1336
TCP 127.0.0.1:51937 127.0.0.1:12344 ESTABLISHED 8624
Я не вижу своей ошибки здесь, каких-либо идей?
В дополнение к проблеме, как использовать этот прослушиватель zmq в целом. Должен ли я создать один экземпляр PUBHandler
для каждого процесса и затем добавить его ко всем экземплярам logger
(logging.getLogger('myapp')
создает собственный экземпляр журнала?) Или мне нужно создать собственный PUBHandler
для всех классов, которые я использую ? Поскольку PUBHandler
класса имеет createLock()
Я предполагаю, что это не резьбу сохранить ...
Для Комплектности я хочу упомянуть doc of the PUBHandler class
Я использую питон (х, у) распределений на Win7 с Python 2.7 +0,10 и pyzmq 14.7.0-14
[обновление] я исключили окно брандмауэра в качестве источника недостающих пакетов
@Akhay согласно документу, 'обработчик = PUBHandler ('InProc: // LOC')' должен быть эквивалентен seperatly создания сокета и привязок это к интерфейсу, но я дам ему попробовать –
Я попробовал ваше предложение, но это ничего не изменило. Я все еще не получаю никаких журналов на стороне абонента. –