TGViewer
Python Community Python Community @python_community_ru · 11.6K subscribers
Post #2550 848
🚀 Как Duolingo удалось увеличить производительность микросервисов на 40% с помощью асинхронного Python 🐍⚡

Duolingo поделилась тем, как им удалось существенно улучшить эффективность своих Python-сервисов, перейдя на использование async/await, и сделали это не ради моды, а для снижения затрат.

💸 Мотивация: повышение производительности и уменьшение расходов
Duolingo управляет множеством микросервисов, которые обрабатывают большие объемы трафика. Несмотря на высокую нагрузку, многие их Python-сервисы простаивали в ожидании ввода-вывода — например, при сетевых запросах или взаимодействии с базой данных. Это приводило к неэффективному использованию процессора, и, соответственно, деньги на облачный хостинг расходовались впустую.

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

⚙️ Как проходила миграция
Процесс был постепенным и тщательно продуманным. Вот ключевые шаги:

▪ Переход не “всё или ничего”
Команда не начала с переписывания всего сервиса с нуля. Они начали с изменения отдельных маршрутов на async def, добавляя асинхронность по частям.

▪ Постепенная адаптация инструментов
Пришлось обновить библиотеки и инструменты внутри компании:
 ▪ HTTP-клиент переписали с использованием aiohttp,
 ▪ систему аутентификации адаптировали к async-контекстам,
 ▪ обновили логирование, трассировку и метрики для работы с async-архитектурой.

▪ Тестирование и инфраструктура
Асинхронные изменения потребовали пересмотра тестов. Они внедрили поддержку pytest-asyncio и переосмыслили подход к мокам и фикстурам.

▪ Постепенный запуск в продакшене
Сначала маршруты работали в синхронном режиме. Затем их перевели в асинхронный режим и замерили разницу. Это помогло выявить “узкие места” до массового внедрения.

📈 Результаты: +40% производительности на экземпляр
▪ Эффективнее стал использоваться процессор у каждого экземпляра микросервиса.
▪ Уменьшилось среднее время ответа (latency).
▪ Снизилось количество необходимых экземпляров — экономия в деньгах.
▪ Код стал легче масштабировать и поддерживать в среде с высокой интенсивностью ввода-вывода.

Пока один запрос “ждет”, процессор может выполнять другие задачи.

🔍 Выводы
Duolingo подчеркивает:
асинхронность не нужна “просто потому что это модно”.
Но если у вас сервис с большим числом операций ввода-вывода и важна производительность — асинхронный Python может обеспечить реальный прирост и экономию.

➡ Оригинальный пост (https://blog.duolingo.com/async-python-migration/)

@Python_Community_ru
Duolingo Blog How we started our async python migration Have you ever wanted to try an Async Python migration, but were unsure where to start? Read this post to find out!
  • 🔥 2
More from @python_community_ru
  1. Oct 4, 2026🐍 Python тормозит? В 3.15 добавили инструмент, который покажет где Tachyon (`profiling.sa…
  2. Oct 2, 2026webAI выпустила TwIL-LM3-Pro - компактную модель на 3,66B параметров специально для формал…
  3. Oct 1, 2026🔥 Бесплатный курс по Claude Code на русском: от установки до команды агентов На GitHub вы…
  4. Sep 30, 2026🖥 Cayu - open-source runtime для долгоживущих ИИ-агентов на Python Проект закрывает инфра…
  5. Sep 29, 2026🖥 Примеры кода на Python 2026: лучшие практики, разбор и задачи с решениями Python пример…
  6. Sep 28, 2026🚀 Jina-OCR-v1 разбирает целые страницы в Markdown со скоростью 2,57 страницы/с Jina AI пр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →