diff options
author | James Socol <me@jamessocol.com> | 2017-08-26 14:02:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-26 14:02:50 -0400 |
commit | 70521887bcb1a8c33a9af46dba1752f2e85db32a (patch) | |
tree | 96cd229c0ac54f203628a6c9df19b1f656ea96a3 | |
parent | 47117d2ded73c254efa6ef980d50850aa5abfb5a (diff) | |
parent | ffbc36fc063955052a62b1de4c2956f685e23636 (diff) | |
download | pystatsd-70521887bcb1a8c33a9af46dba1752f2e85db32a.tar.gz |
Merge pull request #96 from Poogles/feature/fix-time-shifts
Bug: Fix time shifts for python 3.3 and above.
-rw-r--r-- | statsd/client.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/statsd/client.py b/statsd/client.py index 0ac8fa9..54f62e7 100644 --- a/statsd/client.py +++ b/statsd/client.py @@ -3,9 +3,16 @@ from collections import deque from functools import wraps import random import socket -import time import abc +# Use timer that's not susceptable to time of day adjustments. +try: + # perf_counter is only present on Py3.3+ + from time import perf_counter as time_now +except ImportError: + # fall back to using time + from time import time as time_now + __all__ = ['StatsClient', 'TCPStatsClient'] @@ -25,11 +32,11 @@ class Timer(object): """Thread-safe timing function decorator.""" @wraps(f) def _wrapped(*args, **kwargs): - start_time = time.time() + start_time = time_now() try: return_value = f(*args, **kwargs) finally: - elapsed_time_ms = 1000.0 * (time.time() - start_time) + elapsed_time_ms = 1000.0 * (time_now() - start_time) self.client.timing(self.stat, elapsed_time_ms, self.rate) return return_value return _wrapped @@ -43,13 +50,13 @@ class Timer(object): def start(self): self.ms = None self._sent = False - self._start_time = time.time() + self._start_time = time_now() return self def stop(self, send=True): if self._start_time is None: raise RuntimeError('Timer has not started.') - dt = time.time() - self._start_time + dt = time_now() - self._start_time self.ms = 1000.0 * dt # Convert to milliseconds. if send: self.send() |