Отдельно разберём 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
“Sayt hamma qurilmalarda chiroyli chiqishi kerak!” dedingiz-da…
Natijada 50 ta telefon, 1 ta zaryadlovchi, va 0 ta sabr😂
#DasturlashHayoti#Frontend#Responsive#Hazil
💻@dasturlash_hayoti— dasturchilar uchun eng kerakli maslahatlar, hazillar va foydali kontent!
#typescript#css#css_framework#functional_css#postcss#responsive#tailwindcss#utility_classes
Tailwind CSS is a utility-first CSS framework that lets you style websites by adding small, reusable classes directly in your HTML, instead of writing separate CSS files. It provides ready‑made utilities for layout, spacing, colors, and more, so you can build custom user interfaces quickly and consistently. Clear documentation, an active community, and contribution guidelines make it easier to learn, get help, and even contribute to the project, which can save time, reduce CSS complexity, and speed up your UI development.
https://github.com/tailwindlabs/tailwindcss