Отдельно разберём 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
#HFT/USDT analysis :
#HFT has broken out and retested the previously respected zone. The price is expected to rebound from this level and resume its bullish momentum, aiming to test the previous highs. This indicates a strong potential for upward movement as the market seeks to continue its bullish trend.
TF : 1D
Entry : $0.2230
Target : $0.3200
SL : $0.1770
#HFT/USDT analysis :
#HFT is in downtrend, trading below 200ema. Price is in pullback phase. Let it approach resistance zone and reject from there to downside as previous swing low is expect to be tested.
TF : 15min
Entry : $0.1390
Target : $0.1163
SL : $0.1483