Отдельно разберём 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
💥 Онлайн-презентация курсов .NET School и Embedded Systems Lab
Приглашаем всех зарегистрировавшихся на онлайн-презентацию бесплатного курса .NET School по бэкенд-разработке . Ссылка уже выслана вам на почту, указанную при регистрации. Напоминаем, что у всех желающих бесплатно получить набор навыков Junior Back-End Developer еще есть возможность попасть на курс.
➡️Регистрация.
✅ Занятия онлайн.
✅ Первая лекция — 2-го октября.
⚠️ Вступительный экзамен отсутствует.
💻 Онлайн-презентация пройдет сегодня, 🗓 26-го сентября, в 🕡 18:30 МСК.
В 2011-м году DSR и ФКН ВГУ создали центр обучения программированию для встроенных систем. Если вы знаете основы языка C, то будем рады видеть вас в нашей "Embedded Systems Lab", где вы научитесь программировать микроконтроллеры и беспроводные IoT-устройства, изучите стандарты Bluetooth-сетей.
💻 Онлайн-презентация курса состоится в пятницу, 🗓 29-го сентября, в 🕠 17:30 МСК. Ссылка уже пришла вам на почту, если вы зарегистрировались на курс.
➡️Регистрация.
✅ Занятия онлайн.
✅ Вступительное тестирование - 2-го октября.
✅ Первая лекция — 13-го октября.
‼️ PS. Если вы зарегистрировались на курс, но не получили приглашение на презентацию, пришлите письмо на [email protected] с темой "название курса" и адресом почты, указанной при регистрации, в теле письма.
#net#backend#iot#embedded#dsr_training_center#DSR_career#DSRCorporation