Source code for statsd.counter

import statsd


[docs]class Counter(statsd.Client): '''Class to implement a statd counter Additional documentation is available at the parent class :class:`~statsd.client.Client` The values can be incremented/decremented by using either the `increment()` and `decrement()` methods or by simply adding/deleting from the object. >>> counter = Counter('application_name') >>> counter += 10 >>> counter = Counter('application_name') >>> counter -= 10 ''' def _send(self, subname, delta): '''Send the data to statsd via self.connection :keyword subname: The subname to report the data to (appended to the client name) :type subname: str :keyword delta: The delta to add to/remove from the counter :type delta: int ''' name = self._get_name(self.name, subname) self.logger.info('%s: %d', name, delta) return statsd.Client._send(self, {name: '%d|c' % delta})
[docs] def increment(self, subname=None, delta=1): '''Increment the counter with `delta` :keyword subname: The subname to report the data to (appended to the client name) :type subname: str :keyword delta: The delta to add to the counter :type delta: int >>> counter = Counter('application_name') >>> counter.increment('counter_name', 10) True >>> counter.increment(delta=10) True >>> counter.increment('counter_name') True ''' return self._send(subname, int(delta))
[docs] def decrement(self, subname=None, delta=1): '''Decrement the counter with `delta` :keyword subname: The subname to report the data to (appended to the client name) :type subname: str :keyword delta: The delta to remove from the counter :type delta: int >>> counter = Counter('application_name') >>> counter.decrement('counter_name', 10) True >>> counter.decrement(delta=10) True >>> counter.decrement('counter_name') True ''' return self._send(subname, -int(delta))
def __add__(self, delta): '''Increment the counter with `delta` :keyword delta: The delta to add to the counter :type delta: int ''' self.increment(delta=delta) return self def __sub__(self, delta): '''Decrement the counter with `delta` :keyword delta: The delta to remove from the counter :type delta: int ''' self.decrement(delta=delta) return self
[docs]def increment(key, delta=1): '''Increment the counter with `delta` :keyword key: The key to report the data to :type key: str :keyword delta: The delta to add to the counter :type delta: int ''' return Counter(key).increment(delta=delta)
[docs]def decrement(key, delta=1): '''Decrement the counter with `delta` :keyword key: The key to report the data to :type key: str :keyword delta: The delta to remove from the counter :type delta: int ''' return Counter(key).decrement(delta=delta)