Преглед изворни кода

Adds Celery.task_cls to set the base task type

Ask Solem пре 11 година
родитељ
комит
f0ac78e46b
1 измењених фајлова са 5 додато и 2 уклоњено
  1. 5 2
      celery/app/base.py

+ 5 - 2
celery/app/base.py

@@ -78,6 +78,7 @@ class Celery(object):
     loader_cls = 'celery.loaders.app:AppLoader'
     log_cls = 'celery.app.log:Logging'
     control_cls = 'celery.app.control:Control'
+    task_cls = 'celery.app.task:Task'
     registry_cls = TaskRegistry
     _pool = None
 
@@ -85,7 +86,7 @@ class Celery(object):
                  amqp=None, events=None, log=None, control=None,
                  set_as_current=True, accept_magic_kwargs=False,
                  tasks=None, broker=None, include=None, changes=None,
-                 config_source=None, fixups=None, **kwargs):
+                 config_source=None, fixups=None, task_cls=None, **kwargs):
         self.clock = LamportClock()
         self.main = main
         self.amqp_cls = amqp or self.amqp_cls
@@ -94,6 +95,7 @@ class Celery(object):
         self.loader_cls = loader or self.loader_cls
         self.log_cls = log or self.log_cls
         self.control_cls = control or self.control_cls
+        self.task_cls = task_cls
         self.set_as_current = set_as_current
         self.registry_cls = symbol_by_name(self.registry_cls)
         self.accept_magic_kwargs = accept_magic_kwargs
@@ -414,7 +416,7 @@ class Celery(object):
     def create_task_cls(self):
         """Creates a base task class using default configuration
         taken from this app."""
-        return self.subclass_with_self('celery.app.task:Task', name='Task',
+        return self.subclass_with_self(self.task_cls, name='Task',
                                        attribute='_app', abstract=True)
 
     def subclass_with_self(self, Class, name=None, attribute='app',
@@ -478,6 +480,7 @@ class Celery(object):
             'accept_magic_kwargs': self.accept_magic_kwargs,
             'fixups': self.fixups,
             'config_source': self._config_source,
+            'task_cls': self.task_cls,
         }
 
     def __reduce_args__(self):