Search code examples
djangocelerysentryraven

Configure Raven using Celery and Django without Djcelery


How to configure django + raven with celery, without using the djcelery application that is in is out of date with celery 3.1+.

Old configuration using:

    INSTALLED_APPS = INSTALLED_APPS + (
    'raven.contrib.django.raven_compat',
)

Solution

  • You don't need djcelery with Celery 3.1+, just add raven.contrib.django.raven_compat to your INSTALLED_APPS.

    INSTALLED_APPS = (
        ...
        'raven.contrib.django.raven_compat',
    )
    
    RAVEN_CONFIG = {
        'dsn': 'YOUR_DSN',
    }
    

    There is a sample code of LOGGING setting:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'filters': {
            'require_debug_false': {
                '()': 'django.utils.log.RequireDebugFalse',
            },
            'require_debug_true': {
                '()': 'django.utils.log.RequireDebugTrue',
            },
        },
        'formatters': {
            'verbose': {
                'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s',
            },
            'simple': {
                'format': '%(levelname)s %(name)s %(message)s',
            },
            'clear': {
                'format': '%(message)s',
            },
        },
        'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'clear',
                'filters': ['require_debug_true', ],
            },
            'mail_admins': {
                'level': 'ERROR',
                'class': 'django.utils.log.AdminEmailHandler',
                'filters': ['require_debug_false', ],
            },
            'sentry': {
                'level': 'WARNING',
                'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
                'filters': ['require_debug_false', ],
            },
        },
        'loggers': {
            'raven': {
                'level': 'DEBUG',
                'handlers': ['console', ],
                'propagate': False,
            },
            'sentry.errors': {
                'level': 'DEBUG',
                'handlers': ['console', ],
                'propagate': False,
            },
            'log_to_console': {
                'handlers': ['console', ],
                'level': 'DEBUG',
                'propagate': False,
            },
            'log_to_sentry': {
                'handlers': ['sentry', ],
                'level': 'WARNING',
            },
        },
    }