From 0c1478a67e62e58f19b4a58082e7e433f8c57e41 Mon Sep 17 00:00:00 2001 From: Min RK Date: Tue, 26 Apr 2016 13:37:39 +0200 Subject: [PATCH] Make statsd an optional dependency only import it if it's used --- jupyterhub/app.py | 18 ++++++++---------- requirements.txt | 1 - 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/jupyterhub/app.py b/jupyterhub/app.py index 1b57e639..dea6d7e2 100644 --- a/jupyterhub/app.py +++ b/jupyterhub/app.py @@ -12,7 +12,6 @@ import signal import socket import sys import threading -import statsd from datetime import datetime from distutils.version import LooseVersion as V from getpass import getuser @@ -507,22 +506,21 @@ class JupyterHub(Application): Instance(logging.Handler), help="Extra log handlers to set on JupyterHub logger", ).tag(config=True) - - @property - def statsd(self): - if hasattr(self, '_statsd'): - return self._statsd + + statsd = Any(allow_none=False, help="The statsd client, if any. A mock will be used if we aren't using statsd") + @default('statsd') + def _statsd(self): if self.statsd_host: - self._statsd = statsd.StatsClient( + import statsd + client = statsd.StatsClient( self.statsd_host, self.statsd_port, self.statsd_prefix ) - return self._statsd + return client else: # return an empty mock object! - self._statsd = EmptyClass() - return self._statsd + return EmptyClass() def init_logging(self): # This prevents double log messages because tornado use a root logger that diff --git a/requirements.txt b/requirements.txt index c20e7f0d..df714b52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,5 @@ traitlets>=4.1 tornado>=4.1 jinja2 pamela -statsd sqlalchemy>=1.0 requests