Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 850e330

Browse files
committed
--debug for printing logging events passing by.
- zerorpc cli accepts --debug or -d, this turn on DEBUG level logging and active low level events debugging on the zerorpc object. - a zerorpc.SocketBase exposes a new boolean property debug
1 parent 5c66bf0 commit 850e330

File tree

4 files changed

+43
-1
lines changed

4 files changed

+43
-1
lines changed

zerorpc/channel.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import gevent.event
2828
import gevent.local
2929
import gevent.lock
30+
import logging
3031

3132
from .exceptions import TimeoutExpired
3233
from .channel_base import ChannelBase
@@ -122,6 +123,7 @@ def __init__(self, multiplexer, from_event=None):
122123
self._channel_id = from_event.header['message_id']
123124
self._zmqid = from_event.identity
124125
self._multiplexer._active_channels[self._channel_id] = self
126+
logging.debug('<-- new channel %s', self._channel_id)
125127
self._queue.put(from_event)
126128

127129
@property
@@ -135,13 +137,15 @@ def emit_is_supported(self):
135137
def close(self):
136138
if self._channel_id is not None:
137139
del self._multiplexer._active_channels[self._channel_id]
140+
logging.debug('-x- closed channel %s', self._channel_id)
138141
self._channel_id = None
139142

140143
def new_event(self, name, args, xheader=None):
141144
event = self._multiplexer.new_event(name, args, xheader)
142145
if self._channel_id is None:
143146
self._channel_id = event.header['message_id']
144147
self._multiplexer._active_channels[self._channel_id] = self
148+
logging.debug('--> new channel %s', self._channel_id)
145149
else:
146150
event.header['response_to'] = self._channel_id
147151
event.identity = self._zmqid

zerorpc/cli.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@
6969
parser.add_argument('--active-hb', default=False, action='store_true',
7070
help='enable active heartbeat. The default is to \
7171
wait for the server to send the first heartbeat')
72+
parser.add_argument('-d', '--debug', default=False, action='store_true',
73+
help='Print zerorpc debug msgs, \
74+
like outgoing and incomming messages.')
7275
parser.add_argument('address', nargs='?', help='address to connect to. Skip \
7376
this if you specified --connect or --bind at least once')
7477
parser.add_argument('command', nargs='?',
@@ -110,6 +113,8 @@ def run_server(args):
110113
server_obj = server_obj()
111114

112115
server = zerorpc.Server(server_obj, heartbeat=args.heartbeat)
116+
if args.debug:
117+
server.debug = True
113118
setup_links(args, server)
114119
print 'serving "{0}"'.format(server_obj_path)
115120
return server.run()
@@ -209,6 +214,8 @@ def zerorpc_inspect(client, method=None, long_doc=True, include_argspec=True):
209214
def run_client(args):
210215
client = zerorpc.Client(timeout=args.timeout, heartbeat=args.heartbeat,
211216
passive_heartbeat=not args.active_hb)
217+
if args.debug:
218+
client.debug = True
212219
setup_links(args, client)
213220
if not args.command:
214221
(longest_name_len, detailled_methods) = zerorpc_inspect(client,
@@ -257,6 +264,9 @@ def main():
257264
logging.basicConfig()
258265
args = parser.parse_args()
259266

267+
if args.debug:
268+
logging.getLogger().setLevel(logging.DEBUG)
269+
260270
if args.bind or args.connect:
261271
if args.command:
262272
args.params.insert(0, args.command)

zerorpc/events.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import gevent.event
3030
import gevent.local
3131
import gevent.lock
32-
32+
import logging
3333

3434
import gevent_zmq as zmq
3535
from .exceptions import TimeoutExpired
@@ -218,6 +218,7 @@ def __str__(self, ignore_args=False):
218218

219219
class Events(ChannelBase):
220220
def __init__(self, zmq_socket_type, context=None):
221+
self._debug = False
221222
self._zmq_socket_type = zmq_socket_type
222223
self._context = context or Context.get_instance()
223224
self._socket = self._context.socket(zmq_socket_type)
@@ -262,6 +263,19 @@ def close(self):
262263
pass
263264
self._socket.close()
264265

266+
@property
267+
def debug(self):
268+
return self._debug
269+
270+
@debug.setter
271+
def debug(self, v):
272+
if v != self._debug:
273+
self._debug = v
274+
if self._debug:
275+
logging.debug('debug enabled')
276+
else:
277+
logging.debug('debug disabled')
278+
265279
def _resolve_endpoint(self, endpoint, resolve=True):
266280
if resolve:
267281
endpoint = self._context.hook_resolve_endpoint(endpoint)
@@ -276,12 +290,14 @@ def connect(self, endpoint, resolve=True):
276290
r = []
277291
for endpoint_ in self._resolve_endpoint(endpoint, resolve):
278292
r.append(self._socket.connect(endpoint_))
293+
logging.debug('connected to %s (status=%s)', endpoint_, r[-1])
279294
return r
280295

281296
def bind(self, endpoint, resolve=True):
282297
r = []
283298
for endpoint_ in self._resolve_endpoint(endpoint, resolve):
284299
r.append(self._socket.bind(endpoint_))
300+
logging.debug('bound to %s (status=%s)', endpoint_, r[-1])
285301
return r
286302

287303
def new_event(self, name, args, xheader=None):
@@ -291,6 +307,8 @@ def new_event(self, name, args, xheader=None):
291307
return event
292308

293309
def emit_event(self, event, timeout=None):
310+
if self._debug:
311+
logging.debug('--> %s', event)
294312
if event.identity:
295313
parts = list(event.identity or list())
296314
parts.extend(['', event.pack()])
@@ -313,6 +331,8 @@ def recv(self, timeout=None):
313331
blob = parts[0]
314332
event = Event.unpack(blob)
315333
event.identity = identity
334+
if self._debug:
335+
logging.debug('<-- %s', event)
316336
return event
317337

318338
def setsockopt(self, *args):

zerorpc/socket.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,11 @@ def connect(self, endpoint, resolve=True):
4141

4242
def bind(self, endpoint, resolve=True):
4343
return self._events.bind(endpoint, resolve)
44+
45+
@property
46+
def debug(self):
47+
return self._events.debug
48+
49+
@debug.setter
50+
def debug(self, v):
51+
self._events.debug = v

0 commit comments

Comments
 (0)