_celery.py 1.09 KB
# !/usr/bin/env python
# encoding=utf-8
from __future__ import absolute_import

import os
# set the default Django settings module for the 'celery' program.
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'physical.settings')

import raven
from raven.contrib.celery import register_signal, register_logger_signal
from celery import Celery
from django.conf import settings


class Celery(Celery):
    """wrap for celery.Celery."""

    def on_configure(self):
        # check if sentry settings provided
        if not settings.SENTRY_CELERY_ENDPOINT:
            return

        client = raven.Client(settings.SENTRY_CELERY_ENDPOINT)

        # register a custom filter to filter out duplicate logs
        register_logger_signal(client)

        # hook into the Celery error handler
        register_signal(client)


app = Celery('physical_tasks')


# 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)