From ab4177b57b29255a0c00848f02095d61a1a2fef4 Mon Sep 17 00:00:00 2001 From: David Cramer Date: Thu, 21 Jan 2016 09:22:15 -0800 Subject: [PATCH] Defer client loading in Django log handler (fixes GH-701) --- raven/contrib/django/handlers.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/raven/contrib/django/handlers.py b/raven/contrib/django/handlers.py index 14ef2d38..2a2942e5 100644 --- a/raven/contrib/django/handlers.py +++ b/raven/contrib/django/handlers.py @@ -8,13 +8,25 @@ raven.contrib.django.handlers from __future__ import absolute_import -from raven.contrib.django.models import client +import logging + from raven.handlers.logging import SentryHandler as BaseSentryHandler +from raven.utils import memoize class SentryHandler(BaseSentryHandler): def __init__(self, *args, **kwargs): - super(SentryHandler, self).__init__(client=client, *args, **kwargs) + # TODO(dcramer): we'd like to avoid this duplicate code, but we need + # to currently defer loading client due to Django loading patterns. + self.tags = kwargs.pop('tags', None) + + logging.Handler.__init__(self, level=kwargs.get('level', logging.NOTSET)) + + @memoize + def client(self): + # Import must be lazy for deffered Django loading + from raven.contrib.django.models import client + return client def _emit(self, record): request = getattr(record, 'request', None)