Отдельно разберём 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
#AMP/USDT analysis :
#AMP is currently exhibiting an uptrend, consistently reaching new highs while trading above the 200 EMA. The price is now retracing toward the 200 EMA and a significant support level.
It is expected that the price will test this zone and subsequently rebound, which will allow the bullish momentum to persist and potentially lead to a retest of previous highs.
TF : 1D
Entry : $0.006750
Target : $0.011915
SL : $0.004950
#AMP/USDT analysis :
#AMP has broken above a previously tested resistance level and has bounced back after a retest. This suggests a continuation of its bullish momentum, with the price likely to test previous highs from the current level.
TF : 1D
Entry : $0.005420
Target : $0.013400
SL : $0.004180
#AMP has a trading range on 12H Time frame, we expect a good pump from bottom of this range,also after breakup will have another bullish movement again
📈
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️