Warning
This document is for an in-development version 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("{}={}".format(k, v) for (k, v) in tags.items()) + ",path="
if self.statsd_influxdb:
return ',path='
else:
return ''