Loading cloudcontrol/server/handlers.py +24 −1 Original line number Diff line number Diff line Loading @@ -14,12 +14,18 @@ # along with CloudControl. If not, see <http://www.gnu.org/licenses/>. import os import inspect import time import functools import base64 from sjrpc.utils import RpcHandler from cloudcontrol.server import __version__ import prctl def listed(func): func.__listed__ = True Loading Loading @@ -77,7 +83,24 @@ class CCHandler(RpcHandler): raise KeyError('Remote name %s is private.' % repr(name)) else: self.logger.debug('Called %s.%s', self.__class__.__name__, name) return super(CCHandler, self).__getitem__(name) return self._stats_decorator(super(CCHandler, self).__getitem__(name)) def _stats_decorator(self, func): @functools.wraps(func) def wrapper(*args, **kwargs): call_id = base64.b64encode(os.urandom(6)) if getattr(func, '__threaded__', True): prctl.set_name('H: %s' % call_id) started = time.time() returned = func(*args, **kwargs) duration = time.time() - started self.logger.info('Called handler [%s] by %s: %s(%s, %s) -> %.2f', call_id, self.client.login, func.__name__, args, kwargs, duration) return returned return wrapper @property def logger(self): Loading Loading
cloudcontrol/server/handlers.py +24 −1 Original line number Diff line number Diff line Loading @@ -14,12 +14,18 @@ # along with CloudControl. If not, see <http://www.gnu.org/licenses/>. import os import inspect import time import functools import base64 from sjrpc.utils import RpcHandler from cloudcontrol.server import __version__ import prctl def listed(func): func.__listed__ = True Loading Loading @@ -77,7 +83,24 @@ class CCHandler(RpcHandler): raise KeyError('Remote name %s is private.' % repr(name)) else: self.logger.debug('Called %s.%s', self.__class__.__name__, name) return super(CCHandler, self).__getitem__(name) return self._stats_decorator(super(CCHandler, self).__getitem__(name)) def _stats_decorator(self, func): @functools.wraps(func) def wrapper(*args, **kwargs): call_id = base64.b64encode(os.urandom(6)) if getattr(func, '__threaded__', True): prctl.set_name('H: %s' % call_id) started = time.time() returned = func(*args, **kwargs) duration = time.time() - started self.logger.info('Called handler [%s] by %s: %s(%s, %s) -> %.2f', call_id, self.client.login, func.__name__, args, kwargs, duration) return returned return wrapper @property def logger(self): Loading