Отдельно разберём 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
#OP/USDT analysis :
#OP is currently forming a continuation pattern within a downtrend. The price has broken previous lows, and it is anticipated that it will continue its bearish momentum. It is advisable to wait for a pullback to the identified zone for a short entry, as the previous swing low is expected to be tested.
TF : 1D
Entry : $1.493
Target : $1.076
SL : $1.773
#OP/USDT analysis :
#OP has broken out above the 200 EMA and the previous resistance zone with strong bullish momentum. It is now retesting the breakout zone. The price is expected to continue its bullish bias and test previous highs. Wait for a break of the $1.517 level to go long.
TF : 2H
Entry : $1.517
Target : $1.643
SL : $1.444