1616from zrpc .serialization import serialize , deserialize , SerializationError
1717
1818
19- logger = logging .getLogger (__name__ )
20-
21-
2219class _RPCCache (collections .OrderedDict ):
2320
2421 def __init__ (self , maxsize = 128 , * args , ** kwds ):
@@ -47,9 +44,12 @@ def __init__(self, name=None, socket_dir=None):
4744 # Convert CamelCase class name into snake_case
4845 class_name = self .__class__ .__name__
4946 name = re .sub ('([A-Z]+)' , r'_\1' , class_name ).strip ('_' ).lower ()
50- logger .warning ('Service name not set -- using "%s".' % name )
47+ self ._logger = logging .getLogger (__name__ + '.' + name )
48+ self ._logger .warning ('Service name not set -- using "%s".' % name )
5149 else :
52- logger .info ('Starting RPC server "{}"...' .format (name ))
50+ self ._logger = logging .getLogger (__name__ + '.' + name )
51+ self ._logger .info ('Starting RPC server "{}"...' .format (name ))
52+
5353 socket_dir = os .path .abspath (socket_dir or '/tmp/zrpc_sockets' )
5454
5555 context = zmq .Context .instance ()
@@ -66,19 +66,18 @@ def __init__(self, name=None, socket_dir=None):
6666 except (OSError , zmq .ZMQError ) as exc :
6767 raise ConnectError ('Server init error' ) from exc
6868
69- logger .info ('Waiting for bind to complete...' )
69+ self . _logger .info ('Waiting for bind to complete...' )
7070 while not os .path .exists (socket_path ):
7171 time .sleep (0.5 )
7272 os .chmod (socket_path , 0o777 )
73- logger . info ('Success.' )
73+ self . _logger . info ('Success.' + str ( os . listdir ( socket_dir )) )
7474
7575 poller .register (socket )
7676
7777 if self ._rpc_methods is None :
7878 self ._rpc_methods = {}
7979
80- for method in self ._rpc_methods .keys ():
81- logger .info ('Registered RPC method: "%s"' % method )
80+ self ._logger .info ('RPC methods: %s' % list (self ._rpc_methods .keys ()))
8281
8382 self ._name = name
8483 self ._context = context
@@ -119,7 +118,7 @@ def unregister(self, fd):
119118
120119 def run (self ):
121120 """ Run service forever. """
122- logger .info ('Running "{}" forever...' .format (self ._name ))
121+ self . _logger .info ('Running "{}" forever...' .format (self ._name ))
123122 while True :
124123 self .run_once ()
125124
@@ -131,9 +130,9 @@ def run_once(self, timeout=None):
131130 socket = self ._socket
132131 poller = self ._poller
133132
134- logger .debug ('Polling for requests...' )
133+ self . _logger .debug ('Polling for requests...' )
135134 ready_sockets = dict (poller .poll (timeout = timeout ))
136- logger .debug ('Ready_sockets: {}' .format (ready_sockets ))
135+ self . _logger .debug ('Ready_sockets: {}' .format (ready_sockets ))
137136
138137 for ready_socket in ready_sockets :
139138 if ready_socket is socket :
@@ -148,7 +147,7 @@ def __handle_request(self, socket):
148147 request = deserialize (request_data )
149148 [request_id , method_name , args , kwargs ] = request
150149 except (SerializationError , ValueError ) as exc :
151- logger .error ('Received malformed RPC request!' )
150+ self . _logger .error ('Received malformed RPC request!' )
152151 # send empty message to keep REP state machine happy
153152 socket .send (b'' )
154153 return
@@ -164,23 +163,26 @@ def __handle_request(self, socket):
164163 except KeyError :
165164 payload = 'Invalid RPC method name: %s' % method_name
166165 is_exception = True
167- logger .error (payload )
166+ self . _logger .error (payload )
168167 else :
169- logger .debug ('Executing "%s" with args "%s" and kwargs "%s"...'
168+ self . _logger .debug ('Executing "%s" with args "%s" and kwargs "%s"...'
170169 % (method_name , str (args )[:50 ], str (kwargs )[:50 ]))
171170 try :
172171 payload = method (self , * args , ** kwargs )
173172 except Exception as exc :
174- logger .error ('--- RPC METHOD EXCEPTION ---' , exc_info = True )
173+ self ._logger .error ('--- RPC METHOD EXCEPTION ---' ,
174+ exc_info = True )
175175 payload = '%s: %s' % (type (exc ).__name__ , exc )
176176 is_exception = True
177177 else :
178178 is_exception = False
179179
180- logger .debug ('Serializing RPC response "%s"...' % str (payload )[:50 ])
180+ self ._logger .debug ('Serializing RPC response "%s"...'
181+ % str (payload )[:50 ])
181182 response = [request_id , payload , is_exception ]
182183 response_data = serialize (response )
183- logger .debug ('Sending RPC response "%s"...' % str (response_data )[:50 ])
184+ self ._logger .debug ('Sending RPC response "%s"...'
185+ % str (response_data )[:50 ])
184186 self ._cache [request_id ] = response_data
185187 socket .send (response_data )
186188
0 commit comments