Отдельно разберём 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
🔔🔔$BUSD supply dropped to 13.7B, from 16B before @PaxosGlobal stopped issuing $BUSD :
- 512M was burnt in the past 15 hours and 1.1B the day before.
- Address holders reduced from 180K to 176K
- @justinsuntron withdrew 300M $BUSD from #Binance to #Paxos to redeem for fiat yesterday.
👉 More details: https://twitter.com/spotonchain/status/1626365035357544448
#Celsius Network transferred 459,561 $ETH ($1.02B) to several CEX in the past 8 hours, including:
- 305,254 $ETH ($674M) to #Coinbase Prime
- 146,507 $ETH ($324M) to #Paxos
- 7,800 $ETH ($17.02M) to #FalconX
Since Nov 13, 2023, Celsius Network has moved 757,626 $ETH ($1.69B) to FalconX, Coinbase, OKX and Paxos.
And currently still holds 62,469 $ETH ($138M) in address 0xdb3.
For more updates on Celsius Network, follow @spotonchain now and turn on your 🔔 at https://platform.spotonchain.ai/en/profile?address=0xdb31651967684a40a05c4ab8ec56fc32f060998d