Зачем нужно асинхронное программирование

Параллельное и асинхронное программирование дают большие преимущества: помогают выдерживать большие нагрузки и писать эффективный код, не теряя в скорости разработки — поэтому ни один крупный проект не обходится без них. Разработчикам важно знать принципы асинхронности и то, как использовать их на практике.

Навыки и технологии, которые вы освоите

Python
SQL
CI/CD
Unit-тестирование
Daphne
Git
PostgreSQL
Nginx
Docker
AsyncIO
FastAPI
Redis
HTTP
ORM
aiohttp
httpx
asgi
aiopg
pydantic
Uvicorn
Tortoise

Как мы учим

YandexGPT помогает учиться

Когда в теории что-то непонятно, нейросеть объяснит это другими словами. А в конце каждого урока подготовит краткий пересказ о самом главном.

Программа курса

Курс рассчитан на 2,5 месяца, учёбе нужно будет посвящать около 15 часов в неделю
~ 3 часа
Бесплатно
Бесплатное введение
Познакомитесь с процессом обучения на курсе, пройдёте тестирование, чтобы оценить свои навыки и поймёте, подходит ли вам курс
Как устроено обучение
Расскажем про курс и процесс обучения, навыки, которые вы освоите, про команду и формат
Вступительный тест
Ответите на несколько вопросов, которые помогут определить ваш текущий уровень знаний
Результаты тестирования
Поможем понять, не будет ли курс слишком сложным или слишком простым, дадим список дополнительной литературы
2
30 часов
Параллельное программирование
Знакомство с процессами и потоками: создание, завершение, поведение и проблемы, которые возникают в мультипроцессорных и многопоточных программах. Изучение GIL, понятие голодания, гонки, взаимоблокировки, приобретение навыка обходить возникающие проблемы, применение процессов и потоков при решении прикладных задач.
  • Python
  • Multiprocessing
  • Threading
Введение
Вы узнаете про многозадачность, разберётесь, какое место занимает Python в мире параллельных вычислений, узнаете, почему важно уметь работать в команде.
Процессы
Разберёте, что такое процессы, какие они бывают на Python, как с ними взаимодействовать и какие существуют методы (в том числе модуль multiprocessing), механизмы и классы. Выполните небольшое задание для закрепления теории на практике.
Потоки
Узнаете про потоки в Python, синхронизацию, три основных типа задач, с которыми сталкивается большинство разработчиков, и подходы к их решению. Решите небольшую задачку, что закрепить полученные знания.
GIL
Расскажем, как работать с GIL и про Python без GIL.
Проблемы
Поговорим о проблемах, которые встречаются в параллельном программировании при использовании процессов и потоков. Рассмотрим причины их возникновения, методы, как с ними бороться и не допускать появления в будущем.
Советы и рекомендации
Расскажем, как выбрать эффективный размер очереди задач, использовать контекстный менеджер при мультизадачности и как работает очередь с приоритетами.
Как работать с кодом
Поговорим о том, каким рекомендациям стоит следовать, чтобы работать с кодом более эффективно. Коснёмся вопросов оформления, отладки, логирования и тестирования кода.
Заключение
Закрепите знания о процессах и потоках.
Проектное задание первого спринта
Проанализируете данные по погодным условиям, полученные от API Яндекс Погоды.
Проект: анализ данных от API Яндекс Погода с применением концепций параллельного программирования
3
30 часов
Асинхронный подход
Знакомство с итераторами, генераторами и корутинами, разными типами задач, разницей в утилизации ресурсов и ограничениями использовании подходов. Вы научитесь создавать и использовать кастомные итераторы, генераторы и корутины.
  • Итераторы
  • Генераторы
  • Корутины
Введение
Обсудим, зачем нужен асинхронный подход.
Итераторы
Узнаете про итерируемые объекты, итерации и итераторы, познакомитесь с итераторами в Python. Выполните задачу на циклический итератор.
Генераторы
Узнаете, что такое генераторы, чем они отличаются от итераторов, как их применять. Выполните задачу на разжатие массива.
Корутины
Расскажем про конкурентность, корутины, как их применять и чем они отличаются от потоков.
Советы и рекомендации
Уделим внимание метаклассам и конвейерам данных.
Заключение
Закрепите знания о корутинах.
Проект: разработка таск-менеджера на основе корутин с использованием концепций асинхронного программирования
4
30 часов
AsyncIO
Изучение событийного программирования и циклов событий, знакомство с типами многозадачности. Научитесь использовать сокеты и применять основные классы и примитивы фреймворка asyncio для решения прикладных задач. Создадите свой первый асинхронный сервер на asyncio и http-сервер для работы с запросами.
  • Asyncio
  • Aiohttp
  • Streams
  • httpx
Введение
Познакомитесь с AsyncIO.
Основные концепты асинхронности
Узнаете, на каких базовых понятиях построено асинхронное программирование, про синхронный и асинхронный HTTP-сервер, выполните парочку заданий для закрепления информации.
Цикл событий
Раздел построен на разборе кода и практик, которые применяются для разработки цикла событий на основе кода Бизли. Научитесь учитывать это при разработке асинхронных приложений на Python.
AsyncIO
Освоите AsyncIO, узнаете, как работать с задачами с таймерами — приостановкой или отслеживанием времени выполнения.
Заключение
Подытожим, что нужно запомнить про Asyncio.
Проект: разработка мессенджера (клиентской и серверной части) на основе AsyncIO
5
30 часов
Асинхронные фреймворки и библиотеки
Погружение в устройство фреймворков, обработку запросов, реализацию бизнес-логики. Вы приобретёте практические навыки работы с асинхронными фреймворками и библиотеками, такими как aiohttp и FastAPI. Создадите свой сервис с использованием одного из фреймворков в рамках проектного задания.
  • aiohttp
  • FastAPI
  • Docker
  • pydantic
  • PostgreSQL
  • Redis
  • ORM
  • Tortoise
  • aiopg
  • asyncpg
Введение
Рассмотрите фреймворки, которые были созданы на этих принципах и используются в продакшене для решения различных прикладных задач.
Асинхронные фреймворки
Исторический обзор развития фреймворков, которые поддерживают и воплощают подходы к асинхронному программированию. Рассмотрим стратегии, демонстрирующие эволюцию этих методов.
FastAPI
Изучите фреймворк «для ленивых», разберёте возможный вариант структурирования проекта, узнаете, как обрабатываются запросы и как работает внедрение зависимостей.
Взаимодействие с базой данных
Обсудим, как реализуется асинхронное взаимодействие с БД на примере работы с PostgreSQL.
Асинхронные ORM
Поможем разобраться, как реализуется асинхронное взаимодействие с БД в рамках FastAPI на примере работы с PostgreSQL.
Заключение
Закрепим, что нужно запомнить про асинхронные фреймворки.
Проект: разработка сервиса по генерации ссылок на ресурсы и аналитика их использования
6
30 часов
Работа с асинхронным приложением в production
Вы научитесь организовывать инфраструктуру с применением Docker и nginx, познакомитесь с популярными веб-серверами для FastAPI, освоите работу с конфигами с использованием pydantic. Также выполните практическое задание по созданию сервиса, который работает с БД, деплоится в облако и подвергается нагрузке.
  • FastAPI
  • Daphne
  • Hypercorn
  • Uvicorn
  • pydantic
  • Docker
  • Docker Compose
  • Ngnix
  • PostgreSQL
  • Redis
  • Yandex Cloud
  • Github Actions
Введение
Познакомитесь с подходами и инструментами деплоя и его автоматизации.
Проектирование систем
Узнаете про формулирование функциональных и нефункциональных требований, принципы построения систем с высокой нагрузкой, зачем нужны подходы и инструменты, чем они могут помочь, какие существуют варианты применения и альтернативы.
Docker
Разберём Docker, его архитектуру, образы, их назначение и способы описания, сетевое взаимодействие и безопасность, ну и, безусловно, Docker Compose.
Nginx
Веб-серверы. Разберёмся, что такое веб-сервер, какие бывают (HTTP-серверы, серверы приложений и встроенные серверы) и подробнее поговорим о каждом из них.
Облачные решения
Узнаете о возможностях Yandex Cloud, о развёртывании приложений и БД в облачной среде, логировании, мониторинге запущенных серверов и сервисов. Расскажем, как реагировать на инциденты и как поддерживать и обслуживать серверы и сервисы.
Советы и рекомендации. Заключение
Расскажем про сервисы для сервисов, их состояние, как оптимизировать БД и как размещать эти БД. После закрепите знания про этапы разработки и деплоя, инструменты.
Проект: разработка сервиса по загрузке, хранению и выдаче файлов, развёртывание сервисов на облачной платформе Yandex Cloud
С наставником・Каждый спринт
Вебинары для разбора сложных тем, сессии Q&A

Отвечаем на вопросы

Можно ли обучиться асинхронному программированию за 2,5 месяца?
Да. При условии, что вы будете уделять обучению 10–15 часов в неделю, выполнять проектные работы, общаться с вашими коллегами и наставником, вы сможете получить достаточно навыков для использования принципов асинхронного программирования на Python.
Какие навыки необходимы для обучения на курсе?
Необходимо знать синтаксис языка Python, принципы ООП и практику их применения. Также нужно уметь работать в консоли, взаимодействовать с GIT и настраивать окружение для работы. Желательно иметь понимание работы БД и языка SQL, протокола HTTP и REST.
Кто будет меня учить?
Программа составлена ведущими бэкенд-разработчиками и руководителями групп разработки с более чем десятилетним опытом работы в компаниях разного масштаба.
Как и когда я буду учиться?
Обучение состоит из:
— теории для самостоятельного изучения на платформе Практикума и заданий в тренажёре
— вебинаров, на которых наставники разбирают актуальную тему и отвечают на вопросы студентов
— пяти самостоятельных проектов, каждый из которых будут проверять опытные код-ревьюеры

Теорию и задачи в тренажёре вы можете проходить в любое удобное время, а выполнение самостоятельных проектов привязано к дедлайнам.
Если не понравится, я могу вернуть деньги?
Да, причём в любой момент. Если обучение в потоке уже началось, придётся оплатить прошедшие дни — но мы вернём деньги за оставшееся время обучения. Более подробно рассказываем об этом в седьмом пункте оферты.
Что делать, если я не справлюсь с нагрузкой?
Если вам понадобится сделать паузу в учёбе или уделить больше времени закреплению материала, напишите своему куратору.
Получу ли я какой-то документ после курса?
Да, вы получите сертификат о повышении квалификации.

Давайте поможем

Мы работаем с 12:00 до 21:00 по Астане и связываемся в течение одного дня. Если оставите заявку сейчас, то перезвоним уже в рабочее время.