equal
deleted
inserted
replaced
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) |