()
| 17 | |
| 18 | def task_factory(index: int) -> Callable[[], Awaitable[str]]: |
| 19 | async def run() -> str: |
| 20 | nonlocal active_tasks |
| 21 | nonlocal max_active_tasks |
| 22 | active_tasks += 1 |
| 23 | max_active_tasks = max(max_active_tasks, active_tasks) |
| 24 | started_tasks.append(index) |
| 25 | try: |
| 26 | await release_tasks.wait() |
| 27 | return f"result-{index}" |
| 28 | finally: |
| 29 | active_tasks -= 1 |
| 30 | |
| 31 | return run |
| 32 |