|
@@ -9,7 +9,7 @@ from celery.utils import uuid
|
|
|
from celery.utils.compat import UserList
|
|
|
|
|
|
|
|
|
-class TaskSet(UserList):
|
|
|
+class TaskSet(list):
|
|
|
"""A task containing several subtasks, making it possible
|
|
|
to track how many, or when all of the tasks have been completed.
|
|
|
|
|
@@ -26,10 +26,10 @@ class TaskSet(UserList):
|
|
|
app = None
|
|
|
|
|
|
def __init__(self, tasks=None, app=None, Publisher=None):
|
|
|
+ super(TaskSet, self).__init__(maybe_subtask(t) for t in tasks or [])
|
|
|
self.app = app_or_default(app or self.app)
|
|
|
- self.data = [maybe_subtask(t) for t in tasks or []]
|
|
|
- self.total = len(self.tasks)
|
|
|
self.Publisher = Publisher or self.app.amqp.TaskProducer
|
|
|
+ self.total = len(self) # XXX compat
|
|
|
|
|
|
def apply_async(self, connection=None, connect_timeout=None,
|
|
|
publisher=None, taskset_id=None):
|
|
@@ -52,7 +52,7 @@ class TaskSet(UserList):
|
|
|
|
|
|
def _async_results(self, taskset_id, publisher):
|
|
|
return [task.apply_async(taskset_id=taskset_id, publisher=publisher)
|
|
|
- for task in self.tasks]
|
|
|
+ for task in self]
|
|
|
|
|
|
def apply(self, taskset_id=None):
|
|
|
"""Applies the TaskSet locally by blocking until all tasks return."""
|
|
@@ -60,11 +60,11 @@ class TaskSet(UserList):
|
|
|
return self.app.TaskSetResult(setid, self._sync_results(setid))
|
|
|
|
|
|
def _sync_results(self, taskset_id):
|
|
|
- return [task.apply(taskset_id=taskset_id) for task in self.tasks]
|
|
|
+ return [task.apply(taskset_id=taskset_id) for task in self]
|
|
|
|
|
|
def _get_tasks(self):
|
|
|
- return self.data
|
|
|
+ return self
|
|
|
|
|
|
def _set_tasks(self, tasks):
|
|
|
- self.data = tasks
|
|
|
+ self[:] = tasks
|
|
|
tasks = property(_get_tasks, _set_tasks)
|