Ver código fonte

Loaders can now override backend aliases using Loader.override_backends

Ask Solem 15 anos atrás
pai
commit
169668b4cc

+ 3 - 4
celery/backends/__init__.py

@@ -2,15 +2,13 @@ from billiard.utils.functional import curry
 
 from celery import conf
 from celery.utils import get_cls_by_name
+from celery.loaders import current_loader
 
 BACKEND_ALIASES = {
     "amqp": "celery.backends.amqp.AMQPBackend",
     "redis": "celery.backends.pyredis.RedisBackend",
     "mongodb": "celery.backends.mongodb.MongoBackend",
     "tyrant": "celery.backends.tyrant.TyrantBackend",
-    "db": "djcelery.backends.database.DatabaseBackend",
-    "database": "djcelery.backends.database.DatabaseBackend",
-    "cache": "djcelery.backends.cache.CacheBackend",
 }
 
 _backend_cache = {}
@@ -19,7 +17,8 @@ _backend_cache = {}
 def get_backend_cls(backend):
     """Get backend class by name/alias"""
     if backend not in _backend_cache:
-        _backend_cache[backend] = get_cls_by_name(backend, BACKEND_ALIASES)
+        aliases = dict(BACKEND_ALIASES, **current_loader().override_backends)
+        _backend_cache[backend] = get_cls_by_name(backend, aliases)
     return _backend_cache[backend]
 
 

+ 1 - 0
celery/loaders/base.py

@@ -19,6 +19,7 @@ class BaseLoader(object):
     """
     _conf_cache = None
     worker_initialized = False
+    override_backends = {}
 
     def on_task_init(self, task_id, task):
         """This method is called before a task is executed."""

+ 0 - 1
celery/tests/test_backends/__init__.py

@@ -12,7 +12,6 @@ class TestBackends(unittest.TestCase):
     def test_get_backend_aliases(self):
         expects = [("amqp", AMQPBackend),
                    ("database", DatabaseBackend),
-                   ("db", DatabaseBackend),
                    ("redis", RedisBackend)]
         for expect_name, expect_cls in expects:
             self.assertIsInstance(backends.get_backend_cls(expect_name)(),