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