Отдельно разберём TaskGroup, который пришел на замену gather в Python 3.11.
Ключевые отличия
▫️create_task() возвращает объект asyncio.Task, у которого есть соответствюущие методы управления. То есть у нас больше контроля
▫️это контекстный менеджер, который гарантирует что все таски будут остановлены по выходу из контекста
▫️ошибка автоматически отменяет незавершенные задачи,
▫️except* передает нам ExceptionGroup, в котором каждую ошибку можно обработать отдельно
import asyncio
import random
async def do_it() -> str:
if random.random() < 0.1:
raise ValueError('Oops')
delay = random.uniform(0.5, 1.5)
await asyncio.sleep(delay)
return delay
async def main():
try:
async with asyncio.TaskGroup() as tg:
for _ in range(10):
tasks.append(tg.create_task(do_it()))
for t in tasks:
print(t.result())
except *ValueError as e:
for err in e.exceptions:
print(err)
asyncio.run(main())
Рекомендую изучить страницу Coroutines and Tasks из документации, где представлено больше интересных примеров и механизмов
- таймауты
- отмена задач
- создание задач из другого потока
#async
📍 Kruger National Park, South Africa 🇿🇦
🦁 Kruger National Park is one of the most famous safari destinations in the world. It is home to Africa's "Big Five": lions, elephants, buffalo, rhinos, and leopards 🐘. The vast area of the park allows you to see wild animals in their natural habitat, and the diverse landscapes, from savannas to forests, make every trip unforgettable. 🌿
🚗 Tourists can explore the park by car or go on an organized safari with guides. Exciting sunsets, rare bird species, and the opportunity to see African life up close make this place a true adventure. The park is open year-round and ready to give bright emotions to every visitor! 🦓
#travel#safari#wildlife
safari
noun
uk /səˈfɑː.ri/ us /səˈfɑːr.i/
an organized journey to look at, or sometimes hunt, wild animals, especially in Africa.
[Source] 🐒🦒🦏
@googlefactss
#Africa#safari