Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.web.statsd_client

try:
    import statsd
except ImportError:
    statsd = None


# TODO: optimize with two separate implementations around statsd_influxdb?
[docs]class GalaxyStatsdClient:
[docs] def __init__(self, statsd_host, statsd_port, statsd_prefix, statsd_influxdb): if not statsd: raise ImportError("Statsd logging configured, but no statsd python module found. " "Please install the python statsd module to use this functionality.") self.metric_infix = '' self.statsd_influxdb = statsd_influxdb if self.statsd_influxdb: statsd_prefix = statsd_prefix.strip(',') self.statsd_client = statsd.StatsClient(statsd_host, statsd_port, prefix=statsd_prefix)
[docs] def timing(self, path, time, tags=None): infix = self._effective_infix(path, tags) self.statsd_client.timing(infix + path, time)
[docs] def incr(self, path, n=1, tags=None): infix = self._effective_infix(path, tags) self.statsd_client.incr(infix + path, n)
def _effective_infix(self, path, tags): tags = tags or {} if self.statsd_influxdb and tags: return ',' + ",".join(f"{k}={v}" for (k, v) in tags.items()) + ",path=" if self.statsd_influxdb: return ',path=' else: return ''