§ await asyncio.gather(*aws, return_exceptions=False)
-> List[Result | Exception]
§ await asyncio.shield(aw) -> Result
§ await asyncio.wait_for(aw, timeout) -> Result
§ await asyncio.wait(aws, *, timeout=None, return_when=ALL_COMPLETED)
-> Set[Task | Future], Set[Task | Future]
· FIRST_COMPLETED / FIRST_EXCEPTION
§ asyncio.as_completed(aws, timeout=None) -> Iterable[Future]
§ asyncio.{Lock, Event, Condition, Semaphore, BoundedSemaphore}
Structured Concurrency in asyncio
Happy Eyeballs를 이걸로 구현하지 않은 이유 :
1) 각 task 시작 시간을 원하는 간격으로 설정할 수 없고
2) task 실패 시 다음 task를 동적으로 추가할 수 없기 때문