From 8c0c521f6fab9e29543a5eda058dc2a490c7e447 Mon Sep 17 00:00:00 2001 From: codl Date: Mon, 28 Aug 2017 17:13:12 +0200 Subject: [PATCH] add shoddy statsd support --- app.py | 3 +++ lib/statsd.py | 16 ++++++++++++++++ requirements.txt | 1 + 3 files changed, 20 insertions(+) create mode 100644 lib/statsd.py diff --git a/app.py b/app.py index 3d5891a..e9da6ab 100644 --- a/app.py +++ b/app.py @@ -9,6 +9,7 @@ from flask_limiter import Limiter from flask_limiter.util import get_remote_address from lib import get_viewer import os +from lib.statsd import StatsdMiddleware app = Flask(__name__) @@ -89,3 +90,5 @@ def install_security_headers(resp): resp.headers.set('x-xss-protection', '1') return resp + +app.wsgi_app = StatsdMiddleware(app.wsgi_app) diff --git a/lib/statsd.py b/lib/statsd.py new file mode 100644 index 0000000..51d1874 --- /dev/null +++ b/lib/statsd.py @@ -0,0 +1,16 @@ +import time +from statsd.defaults.env import statsd + +class StatsdMiddleware(object): + def __init__(self, app): + self.app = app + + def __call__(self, environ, start_response): + timer_name = 'forget.http.{}.{}'.format( + environ.get('PATH_INFO').replace('/', '.').strip('.') or 'index', + environ.get('REQUEST_METHOD')) + with statsd.timer(timer_name): + response = self.app(environ, start_response) + + return response + diff --git a/requirements.txt b/requirements.txt index de0d2e0..452b0ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -42,3 +42,4 @@ urllib3==1.22 vine==1.1.4 Werkzeug==0.12.2 git+https://github.com/codl/Mastodon.py.git@forget +statsd=3.2.1