Docker с нуля: контейнеры, Docker Compose и практика
Docker с нуля: от первого контейнера до собственного стека в Docker Compose
Курс по подписке
Научитесь писать программы, которые не простаивают, пока ждут сеть, диск или другой сервис
Получить доступ к курсу
Курс по подписке · Обучение в своём темпе · Без звонков и консультаций
О курсе
Большинство реальных программ больше ждут, чем считают: ответ API, запрос к базе, загрузка файла. Пока обычный код ждёт, он не делает ничего. Асинхронный код на asyncio в это время занимается другими запросами — и там, где синхронная версия тратит десять секунд, асинхронная укладывается в одну. Этот курс научит вас такому коду: от первой корутины до сервиса, который собирает данные из десятков источников с лимитами, тайм-аутами и повторами.
Аудитория
Уверенно знаете Python
Будете писать корутины с async/await и запускать работу одновременно через create_task, gather и TaskGroup.
Код ждёт API или базу данных
Будете ставить тайм-ауты, повторы с экспоненциальной задержкой и ограничение частоты запросов к внешним сервисам.
Ревьюите асинхронный код
Будете находить типичные ошибки, правильно отменять задачи и встраивать блокирующий код через to_thread.
Курс опирается на знания, отмеченные ниже как обязательные.
Нужно знать
Уверенный Python — функции, исключения, классы, генераторы и менеджеры контекста (всё это есть в курсе «Продвинутый Python»).
Если этих знаний ещё нет — пройдите курсы по порядку:
Результат
отличать задачи, которые ждут (I/O-bound), от задач, которые считают (CPU-bound), и выбирать между asyncio, потоками и процессами
писать корутины с async/await и понимать, что делает цикл событий
запускать работу одновременно: create_task, gather, as_completed, TaskGroup
ставить тайм-ауты на отдельный вызов и на целый сценарий, иметь запасной план
обрабатывать ошибки нескольких задач: return_exceptions, ExceptionGroup, except*
правильно отменять задачи и убирать за собой
синхронизировать задачи: Lock, Semaphore, Event, Queue
применять проверенные паттерны: повторы с экспоненциальной задержкой, асинхронные генераторы и менеджеры контекста, ограничение частоты запросов
встраивать блокирующий код через asyncio.to_thread и находить типичные ошибки на код-ревью
Формат
10 разделов, 22 урока теории, 34 практических задания с автоматической проверкой и тест в конце каждого раздела. Среди заданий — не только «напишите с нуля», но и поиск ошибок, рефакторинг последовательного кода в конкурентный и дописывание незаконченных программ. Финальный проект — конкурентный сборщик данных с ограничением нагрузки, тайм-аутами, повторами и дедлайном.
Код вы пишете прямо в браузере на Python. Сети в заданиях нет: внешние сервисы имитируются, а время идёт по симулированным часам — asyncio.sleep(2) не заставляет ждать две реальные секунды, но часы программы сдвигаются ровно на 2.0. Поэтому проверка точна и не зависит от нагрузки на сервер: последовательное решение видно сразу, потому что оно «тратит» больше симулированного времени.
22 урока с примерами
30+ заданий с автоматической проверкой
10 тестов для самопроверки
Онлайн на my.prog.academy, без установки программ
Платформа Prog Academy
Курс проходит на платформе Prog Academy — вместе с ним вы получаете AI-помощника и инструменты для поиска первой работы в IT.
Обучение
Вы учитесь, выполняя задания: каждую новую тему сразу применяете на практике, а не только читаете теорию. Задания проверяются автоматически, прямо в браузере.
Вы не остаётесь один на один с материалом
Что-то непонятно или застряли на задании — спросите прямо в уроке. Помощник объяснит тему проще, ответит на вопросы, поможет разобраться в условии задания и подскажет следующий шаг, найдёт нужное в материалах курса. Он знает, какой урок вы проходите, и помнит разговор.
Карьера
Успешно прошли курс — получаете сертификат и в один клик добавляете его в профиль LinkedIn.
Резюме на английском, украинском или русском — прямо на платформе. Ваши курсы и сертификаты добавляются в него в пару кликов.
Junior-вакансии и стажировки в одном месте — с подборкой под курсы, которые вы проходите.
Вся платформа — в одном аккаунте
Программа
10 модулей, 30+ практических заданий с автоматической проверкой и 10 тестов. Откройте модуль, чтобы увидеть все темы.
Почему программы простаивают, чем ожидание отличается от вычислений и какие есть способы делать несколько дел одновременно
async def, await и asyncio.run; что такое корутина, как цикл событий решает, кто выполняется дальше, и почему забытый await — тихая ошибка
create_task, gather, as_completed и TaskGroup — четыре способа запустить несколько корутин так, чтобы их ожидания накладывались
Лимит на одну операцию, бюджет времени на целый сценарий и запасной план, когда сервис не успел
Что происходит с исключением внутри задачи, как собрать все ошибки группы задач и почему ошибка в фоновой задаче может исчезнуть бесследно
Как остановить задачу, где именно появляется CancelledError, как гарантированно убрать за собой и как устроить «гонку» нескольких источников
Гонки данных в одном потоке, Lock, Semaphore для ограничения нагрузки, Event для сигналов и Queue для конвейеров производитель–потребитель
Повторы с экспоненциальной задержкой, асинхронные генераторы и async for, асинхронные менеджеры контекста и ограничение частоты запросов
Как встроить блокирующую библиотеку в асинхронную программу, что делать с вычислениями и как за минуту найти типичные ошибки на код-ревью
Конкурентный сборщик данных от поставщиков с ограничением нагрузки, тайм-аутами, повторами, дедлайном и отчётом — в три шага
Стек
Код пишете и запускаете в браузере на платформе — устанавливать ничего не нужно.
Доступ
Короткая форма на этой странице — без звонков и консультаций.
После формы перейдите в Telegram-бот Prog Academy — он пришлёт дальнейшие инструкции по доступу.
Уроки, практика и тесты — на my.prog.academy, в удобном для вас темпе.
Контакт
Оставьте контакты — пришлём детали доступа к курсу «Асинхронный Python: asyncio на практике». Без звонков и консультаций.
Docker с нуля: от первого контейнера до собственного стека в Docker Compose
C++ Advanced: от основ языка к коду, который пишут в реальных проектах
Проектируйте типы, которые сами не дают написать неправильный код
Оставьте вопрос — подскажем, подходит ли вам курс и с чего лучше начать.