From: Michael Tremer Date: Mon, 29 May 2023 14:32:58 +0000 (+0000) Subject: backend: Replace asyncio.gather() with task groups X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ce79f2b911ab084faae49ddfdc773cb032fefde;p=pbs.git backend: Replace asyncio.gather() with task groups Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 0cf4823c..5583600b 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -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") diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 3872ceb9..a9843320 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -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") diff --git a/src/buildservice/logstreams.py b/src/buildservice/logstreams.py index c957e2d0..cc77e0f6 100644 --- a/src/buildservice/logstreams.py +++ b/src/buildservice/logstreams.py @@ -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), + )