Отдельно разберём 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
🇨🇳
🇨🇺China donates 60,000 tons of rice to Cuba, first shipment sent
Via: Radio Angulo
"The first shipment of 60,000 tons of rice donated by China set sail for Cuba this Thursday, the Cuban Embassy in Shanghai announced.
In a message posted on its official Twitter account. The diplomatic mission added that “in the face of adversity, the solidarity of true friends prevails and demonstrates that #CubaIsNotAlone.”
China has stated on several occasions that it will continue its “support and assistance” to Cuba in the face of repeated threats from the United States. And condemned Washington’s pressure, which “compromises regional peace and stability.”
President of the Republic of Cuba, Miguel Díaz-Canel Bermúdez:
"Thank you #Russia. Thank you President Putin. Thank you crew members of the tanker Anatoly Kolodkin who, upon docking in Cuban port with your valuable cargo of fuel, bring us the certainty of a friendship proven in the hardest moments, as so many times throughout history.
We will continue defending the sovereign right of #Cuba to import fuels, without any kind of interference or pressures.
Work is already underway on the unloading, then the processing, distribution, and rational use of this shipment which, although insufficient amid the acute shortage, will gradually alleviate the situation in the coming weeks.
#CubaIsNotAlone"
https://x.com/DiazCanelB/status/2039409823637180574
♥️🇨🇺 Hundreds of people are arriving in Havana as part of the "Nuestra América” Convoy in solidarity with Cuba. Let’s hear what motivates its protagonists to join this humanistic initiative.
@NuestraAmericaConvoy
#LetCubaLive#LetCubaBreathe#CubaIsNotAlone
♥️🇨🇺 Hundreds of people are arriving in Havana as part of the "Nuestra América” Convoy in solidarity with Cuba. Let’s hear what motivates its protagonists to join this humanistic initiative.
@NuestraAmericaConvoy
#LetCubaLive#LetCubaBreathe#CubaIsNotAlone