cubicweb/statsd_logger.py
changeset 12302 0d474f888f4a
parent 12291 b640ef6ad633
child 12307 d507cbe169ab
equal deleted inserted replaced
12301:73634b5447e2 12302:0d474f888f4a
    56 """
    56 """
    57 
    57 
    58 
    58 
    59 import time
    59 import time
    60 import socket
    60 import socket
       
    61 from contextlib import contextmanager
    61 
    62 
    62 _bucket = 'cubicweb'
    63 _bucket = 'cubicweb'
    63 _address = None
    64 _address = None
    64 _socket = None
    65 _socket = None
    65 
    66 
   132         """Support instance methods."""
   133         """Support instance methods."""
   133         if obj is None:  # class method or some already wrapped method
   134         if obj is None:  # class method or some already wrapped method
   134             return self
   135             return self
   135         import functools
   136         import functools
   136         return functools.partial(self.__call__, obj)
   137         return functools.partial(self.__call__, obj)
       
   138 
       
   139 
       
   140 @contextmanager
       
   141 def statsd_timethis(ctxmsg):
       
   142     if _address is not None:
       
   143         t0 = time.time()
       
   144     try:
       
   145         yield
       
   146     finally:
       
   147         if _address is not None:
       
   148             dt = 1000 * (time.time() - t0)
       
   149             msg = '{0}.{1}:{2:.4f}|ms\n{0}.{1}:1|c\n'.format(
       
   150                 _bucket, ctxmsg, dt)
       
   151             _socket.sendto(msg, _address)