Отдельно разберём 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
International Court of Justice (#ICJ ) has finally had enough of #Israelis and their #genocidal actions against the #Palestinians of Gaza
It has finally decided to do what #SouthAfrica demanded it should have done months ago:
• Demand that the #ZioNazis halt their #genocidal slaughter of innocents in #Gaza
and that
• Israel must ensure access to Gaza for UN genocide investigators
UN rapporteur: Israel will not stop ‘this madness’ until we make it stop
Francesca #Albanese, the #UN’s special #rapporteur on #Palestine on Saturday urged member states to impose sanctions on #Israel along with an arms embargo until it stops “this madness,”
“Let’s be clear. As the #ICJ orders Israel to stop its offensive in #Rafah, #Israel instead intensifies its attacks on it,”
The International Court of Justice (#ICJ) in its latest ruling ordered Israel to immediately halt its military offensive in #Rafah, a city in southern Gaza where more than 1.5 million displaced Palestinians had sought refuge.
“The news I am receiving from the people trapped therein are terrifying,
Be sure: Israel will not stop this madness until WE make it stop,”
Albanese urged all UN member states to impose #sanctions, arms #embargo and suspend diplomatic and political relations with Israel until it ceases its #genocidal assault.
A legal group submitted to the #UN the most thorough legal analysis of Israel's actions concluding it is committing genocide against Palestinians in Gaza.
This is probably the most complete report to date that demonstrates how #Israel's attacks on #Palestinians in #Gaza meet the legal definition of #genocide.
It's a 100-page report, by legal experts at #Boston University School of Law, #Cornell Law School, #Yale Law School, and others.
The report's conclusion:
"Israel has committed the #genocidal acts of #killing, causing serious harm to, and inflicting conditions of life calculated to bring about the physical #destruction of #Palestinians in #Gaza, a protected group that forms a substantial part of the Palestinian people.
These #genocidal acts have been motivated by the requisite genocidal intent, as evidenced in this report by the statements of #Israeli leaders, the character of the State and its forces’ conduct against and relating to Palestinians in Gaza, and the direct nexus between them."