Browse Source

Py2.5: TaskSet can't be UserList since it's an old-style class

Ask Solem 13 years ago
parent
commit
fea6f43836
1 changed files with 7 additions and 7 deletions
  1. 7 7
      celery/task/sets.py

+ 7 - 7
celery/task/sets.py

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