celery.py 1.06 KB
Newer Older
Feanil Patel committed
1 2 3 4 5 6
"""
Import celery, load its settings from the django settings
and auto discover tasks in all installed django apps.

Taken from: http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html
"""
Feanil Patel committed
7
from __future__ import absolute_import
8

Feanil Patel committed
9
import os
10

Feanil Patel committed
11 12
from celery import Celery
from django.conf import settings
13

14
from openedx.core.lib.celery.routers import AlternateEnvironmentRouter
Feanil Patel committed
15 16 17 18

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

Feanil Patel committed
19
APP = Celery('proj')
Feanil Patel committed
20 21 22

# Using a string here means the worker will not have to
# pickle the object when using Windows.
Feanil Patel committed
23 24
APP.config_from_object('django.conf:settings')
APP.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
25 26 27 28 29 30 31 32 33 34 35 36 37


class Router(AlternateEnvironmentRouter):
    """
    An implementation of AlternateEnvironmentRouter, for routing tasks to non-cms queues.
    """

    @property
    def alternate_env_tasks(self):
        """
        Defines alternate environment tasks, as a dict of form { task_name: alternate_queue }
        """
        return {}