bpo-31294: Fix ZeroMQSocketListener and ZeroMQSocketHandler examples (#3229)

* Fix ZeroMQSocketListener and ZeroMQSocketHandler examples

* Use send_json and recv_json to simplify pyzmq interfacing

* Add News entry
This commit is contained in:
Pablo Galindo 2017-09-07 21:53:13 +01:00 committed by Christian Heimes
parent 397c467c49
commit 586c0502b5
3 changed files with 11 additions and 8 deletions

View file

@ -1258,8 +1258,8 @@ socket is created separately and passed to the handler (as its 'queue')::
class ZeroMQSocketHandler(QueueHandler): class ZeroMQSocketHandler(QueueHandler):
def enqueue(self, record): def enqueue(self, record):
data = json.dumps(record.__dict__) self.queue.send_json(record.__dict__)
self.queue.send(data)
handler = ZeroMQSocketHandler(sock) handler = ZeroMQSocketHandler(sock)
@ -1272,11 +1272,10 @@ data needed by the handler to create the socket::
self.ctx = ctx or zmq.Context() self.ctx = ctx or zmq.Context()
socket = zmq.Socket(self.ctx, socktype) socket = zmq.Socket(self.ctx, socktype)
socket.bind(uri) socket.bind(uri)
QueueHandler.__init__(self, socket) super().__init__(socket)
def enqueue(self, record): def enqueue(self, record):
data = json.dumps(record.__dict__) self.queue.send_json(record.__dict__)
self.queue.send(data)
def close(self): def close(self):
self.queue.close() self.queue.close()
@ -1292,12 +1291,13 @@ of queues, for example a ZeroMQ 'subscribe' socket. Here's an example::
def __init__(self, uri, *handlers, **kwargs): def __init__(self, uri, *handlers, **kwargs):
self.ctx = kwargs.get('ctx') or zmq.Context() self.ctx = kwargs.get('ctx') or zmq.Context()
socket = zmq.Socket(self.ctx, zmq.SUB) socket = zmq.Socket(self.ctx, zmq.SUB)
socket.setsockopt(zmq.SUBSCRIBE, '') # subscribe to everything socket.setsockopt_string(zmq.SUBSCRIBE, '') # subscribe to everything
socket.connect(uri) socket.connect(uri)
super().__init__(socket, *handlers, **kwargs)
def dequeue(self): def dequeue(self):
msg = self.queue.recv() msg = self.queue.recv_json()
return logging.makeLogRecord(json.loads(msg)) return logging.makeLogRecord(msg)
.. seealso:: .. seealso::

View file

@ -1561,6 +1561,7 @@ Martin Teichmann
Gustavo Temple Gustavo Temple
Mikhail Terekhov Mikhail Terekhov
Victor Terrón Victor Terrón
Pablo Galindo
Richard M. Tew Richard M. Tew
Tobias Thelen Tobias Thelen
Christian Theune Christian Theune

View file

@ -0,0 +1,2 @@
Fix incomplete code snippet in the ZeroMQSocketListener and
ZeroMQSocketHandler examples and adapt them to Python 3.