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)