from celery import current_app from celery.local import LocalProxy from celery.utils import get_cls_by_name BACKEND_ALIASES = { "amqp": "celery.backends.amqp.AMQPBackend", "cache": "celery.backends.cache.CacheBackend", "redis": "celery.backends.pyredis.RedisBackend", "mongodb": "celery.backends.mongodb.MongoBackend", "tyrant": "celery.backends.tyrant.TyrantBackend", "database": "celery.backends.database.DatabaseBackend", "cassandra": "celery.backends.cassandra.CassandraBackend", } _backend_cache = {} def get_backend_cls(backend, loader=None): """Get backend class by name/alias""" loader = loader or current_app.loader if backend not in _backend_cache: aliases = dict(BACKEND_ALIASES, **loader.override_backends) _backend_cache[backend] = get_cls_by_name(backend, aliases) return _backend_cache[backend] # deprecate this. default_backend = LocalProxy(lambda: current_app.backend)
import os import sys VERSION = (2, 3, 0, "a2") __version__ = ".".join(map(str, VERSION[0:3])) + "".join(VERSION[3:]) __author__ = "Ask Solem" __contact__ = "*****@*****.**" __homepage__ = "http://celeryproject.org" __docformat__ = "restructuredtext" if sys.version_info < (2, 5): raise Exception("Python 2.4 is not supported by this version. " "Please use Celery versions 2.1.x or earlier.") def Celery(*args, **kwargs): from celery.app import App return App(*args, **kwargs) if not os.environ.get("CELERY_NO_EVAL", False): from celery.local import LocalProxy def _get_current_app(): from celery.app import current_app return current_app() current_app = LocalProxy(_get_current_app)