From 104a6822bc3950931a097fc1487aa2949e8e8a11 Mon Sep 17 00:00:00 2001 From: Snowykami Date: Thu, 17 Apr 2025 22:16:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=99=90=E6=B5=81=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E5=B0=86=E4=BF=A1=E5=8F=B7=E9=87=8F=E4=BB=8E?= =?UTF-8?q?=2050=20=E6=9B=B4=E6=94=B9=E4=B8=BA=205=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1=E4=BC=A0=E9=80=92=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BB=A5=E7=A1=AE=E4=BF=9D=E6=AD=A3=E7=A1=AE=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sync.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sync.py b/sync.py index ef50174..23b03e6 100644 --- a/sync.py +++ b/sync.py @@ -52,12 +52,13 @@ async def docker_task(source: str, target: str) -> int | None: return r return 0 -semaphore = asyncio.Semaphore(50) +semaphore = asyncio.Semaphore(5) async def limited_task[T: Any](semaphore: asyncio.Semaphore, task: Callable[[], Coroutine[None, None, T]]) -> T: async with semaphore: return await task() + async def main(): async with aiofiles.open('images.yaml', 'r') as file: config = await file.read() @@ -72,9 +73,9 @@ async def main(): for image in config.images: if len(image.tags) > 0: for tag in image.tags: - tasks.append(limited_task(semaphore, lambda: docker_task(f"{image.source}:{tag}", f"{image.target}:{tag}"))) + tasks.append(limited_task(semaphore, lambda s=f"{image.source}:{tag}", t=f"{image.target}:{tag}": docker_task(s, t))) else: - tasks.append(limited_task(semaphore, lambda: docker_task(image.source, image.target))) + tasks.append(limited_task(semaphore, lambda s=image.source, t=image.target: docker_task(s, t))) results = await asyncio.gather(*tasks) failed_tasks = sum(1 for result in results if result is not None and result != 0)