Skip to content

Instantly share code, notes, and snippets.

@emperorcezar
Created June 11, 2015 22:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emperorcezar/b9f11a1899338bdd5d14 to your computer and use it in GitHub Desktop.
Save emperorcezar/b9f11a1899338bdd5d14 to your computer and use it in GitHub Desktop.
from __future__ import absolute_import
import logging
import celery
from django.conf import settings
class NoHardTimeoutFilter(logging.Filter):
def filter(self, record):
return "Hard time limit" not in record.getMessage()
class CeleryWithRavenLogging(celery.Celery):
# Subclass to get hook on configuration, to enable sentry logging.
def on_configure(self):
raven_config = getattr(settings, 'RAVEN_CONFIG', None)
if raven_config and 'dsn' in raven_config:
import raven
from raven.contrib.celery import register_signal, register_logger_signal
client = raven.Client(dsn=raven_config['dsn'])
logger = logging.getLogger()
logger.addFilter(NoHardTimeoutFilter())
# register a custom filter to filter out duplicate logs
register_logger_signal(client, logger=logger)
# hook into the Celery error handler
register_signal(client)
app = CeleryWithRavenLogging('myapp')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment