Отдельно разберём 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
🕵️#MEGA Bubblemaps: MEGA tokens were distributed among 8,360 addresses, with approximately 50% of addresses still holding all the tokens. About 40% of addresses have sold them completely, and around 10% of addresses have sold only a portion of the coins. link
Guillaume Faye left us on March 6, 2019, at the age of 69. He was a unique figure who leaves behind an extensive body of work. Like the ancient Greek heroes of old, he will achieve immortality if we continue to share his ideas. Guillaume laid the foundations—now it is up to us, dear comrades, to build the sanctuary of European civilization!
#MEGA
¿Que puede hacer este bot?
@MegaUploadXbot
Este bot cargará archivos y vinculará directamente a su cuenta de Mega entre otras características.
Idioma: inglés
(Visto en @botsgram_cu)
#mega