cubicweb/statsd_logger.py
changeset 12302 0d474f888f4a
parent 12291 b640ef6ad633
child 12307 d507cbe169ab
--- a/cubicweb/statsd_logger.py	Tue Apr 24 14:16:14 2018 +0200
+++ b/cubicweb/statsd_logger.py	Mon Nov 13 16:08:58 2017 +0100
@@ -58,6 +58,7 @@
 
 import time
 import socket
+from contextlib import contextmanager
 
 _bucket = 'cubicweb'
 _address = None
@@ -134,3 +135,17 @@
             return self
         import functools
         return functools.partial(self.__call__, obj)
+
+
+@contextmanager
+def statsd_timethis(ctxmsg):
+    if _address is not None:
+        t0 = time.time()
+    try:
+        yield
+    finally:
+        if _address is not None:
+            dt = 1000 * (time.time() - t0)
+            msg = '{0}.{1}:{2:.4f}|ms\n{0}.{1}:1|c\n'.format(
+                _bucket, ctxmsg, dt)
+            _socket.sendto(msg, _address)