]> git.ipfire.org Git - pbs.git/commitdiff
backend: Replace asyncio.gather() with task groups
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 May 2023 14:32:58 +0000 (14:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 May 2023 14:32:58 +0000 (14:32 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/buildservice/jobs.py
src/buildservice/logstreams.py

index 0cf4823c7f56a6568fa509356fdc95ca7b3b18a9..5583600b58163b0ed934660febbd8c98ab599f8b 100644 (file)
@@ -317,9 +317,11 @@ class Build(base.DataObject):
                        await self.test_builds.delete(user=user)
 
                # Delete all jobs
-               await asyncio.gather(
-                       *(job.delete(user=user) for job in self._jobs),
-               )
+               async with asyncio.TaskGroup() as tasks:
+                       for job in self._jobs:
+                               tasks.create_task(
+                                       job.delete(user=user),
+                               )
 
                # Mark as deleted
                self._set_attribute_now("deleted_at")
@@ -1283,9 +1285,11 @@ class Group(base.DataObject):
 
        async def delete(self, user=None):
                # Delete all builds in this group
-               await asyncio.gather(
-                       *(build.delete(user=user) for build in self.builds),
-               )
+               async with asyncio.TaskGroup() as tasks:
+                       for build in self.builds:
+                               tasks.create_task(
+                                       build.delete(user=user),
+                               )
 
                # Mark as deleted
                self._set_attribute_now("deleted_at")
index 3872ceb91716825deb31ef8dd49fbeea47bc09e5..a98433208c52c469ce4caec19d85c2e037144b9e 100644 (file)
@@ -361,9 +361,11 @@ class Job(base.DataObject):
                self.packages = packages
 
                # Consume all packages
-               await asyncio.gather(
-                       *(upload.delete() for upload in uploads),
-               )
+               async with asyncio.TaskGroup() as tasks:
+                       for upload in uploads:
+                               tasks.create_task(
+                                       upload.delete(),
+                               )
 
        @property
        def size(self):
@@ -628,9 +630,11 @@ class Job(base.DataObject):
                        Deletes a job
                """
                # Delete all binary packages
-               await asyncio.gather(
-                       *(pkg.delete(user=user) for pkg in self.packages),
-               )
+               async with asyncio.TaskGroup() as tasks:
+                       for pkg in self.packages:
+                               tasks.create_task(
+                                       pkg.delete(user=user),
+                               )
 
                # Mark as deleted
                self._set_attribute_now("deleted_at")
index c957e2d064da002929c564b1390fd5990d03dbb7..cc77e0f61056f3b95906727cc1f42e1a17c02098 100644 (file)
@@ -150,6 +150,8 @@ class LogStream(base.Object):
                        self.buffer.append(m)
 
                        # Send the message to all consumers
-                       await asyncio.gather(
-                               *(c.message(m) for c in self.consumers),
-                       )
+                       async with asyncio.TaskGroup() as tasks:
+                               for c in self.consumers:
+                                       tasks.create_task(
+                                               c.message(m),
+                                       )