From a1b9cb43112fd6a7fa824008cd335b5bc792ff98 Mon Sep 17 00:00:00 2001 From: codl Date: Mon, 7 Aug 2017 13:29:31 +0200 Subject: [PATCH] add sentry support --- app.py | 5 +++++ config.example.py | 2 ++ requirements.txt | 3 +++ routes.py | 9 +++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 0b3ae71..36195b3 100644 --- a/app.py +++ b/app.py @@ -27,3 +27,8 @@ metadata = MetaData(naming_convention = { db = SQLAlchemy(app, metadata=metadata) migrate = Migrate(app, db) + +sentry = None +if 'SENTRY_DSN' in app.config: + from raven.contrib.flask import Sentry + sentry = Sentry(app, dsn=app.config['SENTRY_DSN']) diff --git a/config.example.py b/config.example.py index 58e4915..86229cd 100644 --- a/config.example.py +++ b/config.example.py @@ -31,6 +31,8 @@ CELERY_BROKER='amqp://' HTTPS=True +# SENTRY_DSN='https://foo:bar@sentry.io/69420' + """ you can also use any config variable that flask expects here, such as """ diff --git a/requirements.txt b/requirements.txt index 4d4ac30..4e61930 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,10 @@ alembic==0.9.3 amqp==2.2.1 billiard==3.5.0.3 +blinker==1.4 celery==4.1.0 click==6.7 +contextlib2==0.5.5 Flask==0.12.2 Flask-Migrate==2.0.4 Flask-Script==2.0.5 @@ -18,6 +20,7 @@ psycopg2==2.7.1 python-dateutil==2.6.0 python-editor==1.0.3 pytz==2017.2 +raven==6.1.0 six==1.10.0 SQLAlchemy==1.1.11 twitter==1.17.1 diff --git a/routes.py b/routes.py index 48d085a..538d9ed 100644 --- a/routes.py +++ b/routes.py @@ -1,11 +1,10 @@ -from app import app from flask import render_template, url_for, redirect, request, g, Response from datetime import datetime, timedelta import lib.twitter import lib from lib import require_auth from model import Account, Session, Post, TwitterArchive -from app import db +from app import app, db, sentry import tasks @app.before_request @@ -14,6 +13,12 @@ def load_viewer(): sid = request.cookies.get('forget_sid', None) if sid: g.viewer = Session.query.get(sid) + if g.viewer and sentry: + sentry.user_context({ + 'id': g.viewer.account.id, + 'username': g.viewer.account.screen_name, + 'service': g.viewer.account.service + }) @app.after_request def touch_viewer(resp):