Kaydet (Commit) 586c0502 authored tarafından Pablo Galindo's avatar Pablo Galindo Kaydeden (comit) Christian Heimes

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
üst 397c467c
...@@ -1258,8 +1258,8 @@ socket is created separately and passed to the handler (as its 'queue'):: ...@@ -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:: ...@@ -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:: ...@@ -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::
......
...@@ -1561,6 +1561,7 @@ Martin Teichmann ...@@ -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
......
Fix incomplete code snippet in the ZeroMQSocketListener and
ZeroMQSocketHandler examples and adapt them to Python 3.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment