Отдельно разберём 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
#Italia
❗️BREAKING: Si è dimesso il Presidente della FIGC, Gabriele #Gravina. Decisiva la terza eliminazione consecutiva dalle Qualificazioni Mondiali. Il 22 giugno si voterà il nuovo Presidente.
@OsservatorioItaliano
#Italia
❗️BREAKING: Si è dimesso il Presidente della FIGC, Gabriele #Gravina. Decisiva la terza eliminazione consecutiva dalle Qualificazioni Mondiali. Il 22 giugno si voterà il nuovo Presidente.
@OsservatorioItaliano
Nota della #Lega: "Ancora eliminati. Niente Mondiale per l’Italia: è una vergogna inaccettabile. Il calcio italiano è da rifondare, partendo dalle dimissioni di Gabriele #Gravina".
@UltimoraPolitics24
#Italia
#Azione|RE chiede le dimissioni di #Gravina da presidente della FIGC: "Non cambiamo le persone, non cambiano i meccanismi. Altrove chi sbaglia si dimette. Qui chi sbaglia resiste al suo posto. E allora non dobbiamo sorprenderci che perdiamo. Perché prima di perdere le partite, abbiamo smesso di pretendere responsabilità. E senza responsabilità, un Paese non va da nessuna parte"
@OsservatorioItaliano
Il ministro dello sport Andrea #Abodi: "È evidente a tutti che il calcio italiano va rifondato e che questo processo debba ripartire da un rinnovamento dei vertici della FIGC", e replica a #Gravina: "È scorretto tentare di negare le proprie responsabilità sulla terza mancata qualificazione consecutiva ai Mondiali, accusando le Istituzioni di una presunta inadempienza e sminuendo l'importanza e il livello professionistico di altri sport".
@UltimoraPolitics24
#Molise2023
Via libera dal #PD, il centrosinistra annuncia la candidatura del sindaco #M5S di Campobasso Roberto #Gravina alla presidenza della regione. Elezioni previste il 25 e il 26 giugno
@UltimoraPolitics