__init__.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from celery import current_app
  2. from celery.local import LocalProxy
  3. from celery.utils import get_cls_by_name
  4. BACKEND_ALIASES = {
  5. "amqp": "celery.backends.amqp.AMQPBackend",
  6. "cache": "celery.backends.cache.CacheBackend",
  7. "redis": "celery.backends.redis.RedisBackend",
  8. "mongodb": "celery.backends.mongodb.MongoBackend",
  9. "tyrant": "celery.backends.tyrant.TyrantBackend",
  10. "database": "celery.backends.database.DatabaseBackend",
  11. "cassandra": "celery.backends.cassandra.CassandraBackend",
  12. "disabled": "celery.backends.base.DisabledBackend",
  13. }
  14. _backend_cache = {}
  15. def get_backend_cls(backend=None, loader=None):
  16. """Get backend class by name/alias"""
  17. backend = backend or "disabled"
  18. loader = loader or current_app.loader
  19. if backend not in _backend_cache:
  20. aliases = dict(BACKEND_ALIASES, **loader.override_backends)
  21. try:
  22. _backend_cache[backend] = get_cls_by_name(backend, aliases)
  23. except ValueError, exc:
  24. raise ValueError("Unknown result backend: %r. "
  25. "Did you spell it correctly? (%s)" % (backend,
  26. exc))
  27. return _backend_cache[backend]
  28. # deprecate this.
  29. default_backend = LocalProxy(lambda: current_app.backend)