Procházet zdrojové kódy

Improve performance of ResultSet.join_native

Stas Rudakou před 11 roky
rodič
revize
425c0fe6c8
1 změnil soubory, kde provedl 4 přidání a 2 odebrání
  1. 4 2
      celery/result.py

+ 4 - 2
celery/result.py

@@ -566,7 +566,9 @@ class ResultSet(ResultBase):
         result backends.
         result backends.
 
 
         """
         """
-        results = self.results
+        results_index = dict(
+            (task_id, i) for i, task_id in enumerate(self.results)
+        )
         acc = None if callback else [None for _ in range(len(self))]
         acc = None if callback else [None for _ in range(len(self))]
         for task_id, meta in self.iter_native(timeout, interval):
         for task_id, meta in self.iter_native(timeout, interval):
             value = meta['result']
             value = meta['result']
@@ -575,7 +577,7 @@ class ResultSet(ResultBase):
             if callback:
             if callback:
                 callback(task_id, value)
                 callback(task_id, value)
             else:
             else:
-                acc[results.index(task_id)] = value
+                acc[results_index[task_id]] = value
         return acc
         return acc
 
 
     def _failed_join_report(self):
     def _failed_join_report(self):