|
@@ -1,6 +1,7 @@
|
|
from celery import current_app
|
|
from celery import current_app
|
|
from celery.local import Proxy
|
|
from celery.local import Proxy
|
|
from celery.utils import get_cls_by_name
|
|
from celery.utils import get_cls_by_name
|
|
|
|
+from celery.utils.functional import memoize
|
|
|
|
|
|
BACKEND_ALIASES = {
|
|
BACKEND_ALIASES = {
|
|
"amqp": "celery.backends.amqp.AMQPBackend",
|
|
"amqp": "celery.backends.amqp.AMQPBackend",
|
|
@@ -13,22 +14,18 @@ BACKEND_ALIASES = {
|
|
"disabled": "celery.backends.base.DisabledBackend",
|
|
"disabled": "celery.backends.base.DisabledBackend",
|
|
}
|
|
}
|
|
|
|
|
|
-_backend_cache = {}
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
+@memoize(100)
|
|
def get_backend_cls(backend=None, loader=None):
|
|
def get_backend_cls(backend=None, loader=None):
|
|
"""Get backend class by name/alias"""
|
|
"""Get backend class by name/alias"""
|
|
backend = backend or "disabled"
|
|
backend = backend or "disabled"
|
|
loader = loader or current_app.loader
|
|
loader = loader or current_app.loader
|
|
- if backend not in _backend_cache:
|
|
|
|
- aliases = dict(BACKEND_ALIASES, **loader.override_backends)
|
|
|
|
- try:
|
|
|
|
- _backend_cache[backend] = get_cls_by_name(backend, aliases)
|
|
|
|
- except ValueError, exc:
|
|
|
|
- raise ValueError("Unknown result backend: %r. "
|
|
|
|
- "Did you spell it correctly? (%s)" % (backend,
|
|
|
|
- exc))
|
|
|
|
- return _backend_cache[backend]
|
|
|
|
|
|
+ aliases = dict(BACKEND_ALIASES, **loader.override_backends)
|
|
|
|
+ try:
|
|
|
|
+ return get_cls_by_name(backend, aliases)
|
|
|
|
+ except ValueError, exc:
|
|
|
|
+ raise ValueError("Unknown result backend: %r. "
|
|
|
|
+ "Did you spell it correctly? (%s)" % (backend, exc))
|
|
|
|
|
|
|
|
|
|
# deprecate this.
|
|
# deprecate this.
|