SIGN IN SIGN UP

refactor: adopt asyncio.TaskGroup for structured concurrency (#909)

Adopts `asyncio.TaskGroup` (Python 3.11+) in four places:

- **`ApifyRequestList._fetch_requests_from_url`** — structured task
scope for concurrent remote-list fetches; errors aggregate as
`ExceptionGroup`.
- **`Actor.reboot` pre-reboot dispatch** — `asyncio.timeout(...)` +
`TaskGroup`, each listener wrapped in `safe_dispatch` so one failure no
longer aborts siblings (preserves
`test_reboot_runs_all_listeners_even_when_one_fails`).
- **`Actor._save_actor_state`** — per-store persists fan out instead of
running sequentially; per-task try/except keeps cleanup best-effort.
- **`ApifyFileSystemKeyValueStoreClient.purge`** — `unlink` calls fan
out instead of running sequentially.

Closes #765
V
Vlada Dusek committed
eb0323d7ad52b1941acd26f04a10df8a252099a0
Parent: f4304e8
Committed by GitHub <noreply@github.com> on 5/29/2026, 10:13:01 AM