Рубрика «asyncio»

Один STT-сервис дал 60-70% точности на специфической лексике (топонимы, названия улиц, профессиональные термины). Два сервиса параллельно + взвешенное голосование + AI-fusion для спорных случаев дали 95%+ точности. Время обработки 5-8 секунд, стоимость $70-130/месяц при 1000 сообщений в день. В статье — полный разбор архитектуры, алгоритмы scoring, примеры кода и расчёт экономики.

Содержание

  1. Почему один STT оказалось недостаточно

  2. Эволюция решения: от 60% к 95%

  3. Архитектура Multi-API Ensemble

  4. Взвешенное голосование: математика выбора

  5. AI-fusion: когда голосования недостаточно

  6. Читать полностью »

Привет! Хочу рассказать о своей новой библиотеке context-async-sqlalchemy, которая помогает очень просто работать с sqlalchemy в async python приложениях. Минимум кода для простых сценариев, но и максимум свободы для сложных.

Сначала кратко пройдемся по теории из чего состоит sqlalchemy и как ее происходит интеграция в python приложение. Посмотрим какие есть нюансы и как context-async-sqlalchemy помогает вам удобно работать. Важно что речь идет только об async python.

Краткая сводка по sqlalchemy

sqlalchemy предоставляет EngineЧитать полностью »

Архитектурные решения, грабли и RabbitMQ

Привет!

Я Python-инженер. Последние несколько лет я в одиночку строил довольно сложную бэкенд‑систему, и за это время набил немало шишек и нашел, как мне кажется, несколько интересных решений. В этой статье я хочу поделиться не «историей успеха», а конкретными архитектурными проблемами и их решениями при построении высокопроизводительного сервиса на асинхронном Python.

Статья будет полезна тем, кто работает с FastAPI, микросервисами и думает о надежности и масштабируемости своих систем.

1. Проблема: Хаос из 20+ AI-моделей

Читать полностью »

Хватит спорить — пора запускать и сравнивать.

Тестируем реальные сценарии, измеряем RPS, смотрим на потребление памяти и разбираемся, когда самая разумная стратегия — это просто подождать и обновить Python на free-threading версию. 

Привет! Меня зовут Игорь Анохин, я — руководитель платформенной разработки в K2 Cloud и более 8 лет программирую на Python. 

В чём проблема

Хочу поговорить про асинхронность и многопоточностьЧитать полностью »

Блокировка event loop довольно серьезная проблема в асинхронных приложениях, потому что приводит к замедлению не конкретного запроса пользователя, а сразу всех запросов пользователей. Так давайте разберемся, что же это значит и, насколько это страшно и для разработчика и для клиентов сервиса.

Как происходит блокировка?

Работая в Python мы всегда используем процесс и поток, даже когда работаем над простейшими программами типа Hello World!Читать полностью »

Привет! Сегодня я расскажу о том, как я разработал Telegram-бота для мониторинга цен на Авито. Бот умеет отслеживать изменения цен в объявлениях и уведомлять пользователей об изменениях. В статье я поделюсь всеми этапами разработки, от проектирования до финальной реализации.

Идея создания бота появилась, когда я хотел сделать агента под свои нужды, не буду говорить какие. И дело дошло до автоматизации процесса пользованием авито.

Что умеет бот?

  • Поиск объявлений по различным параметрам (название, категория, город, ценовой диапазон)

  • Отслеживание цен в реальном времени

  • Читать полностью »

В данной статье мы рассмотрим основы асинхронного программирования в python, фокусируясь на ключевых концепциях и их практическом применении. Мы начнем с изучения генераторов и итераторов — фундаментальных механизмов, лежащих в основе асинхронности python. Затем поговорим о потоках и процессах, чтобы понять, как они соотносятся с асинхронным подходом.

Основная цель статьи — создание собственной упрощенной реализации asyncio, включая цикл событий, задачи и примитивы синхронизации. Это позволит глубже понять внутреннее устройство асинхронной разработки в python.

Содержание

В данной статье мы рассмотрим задачу массовой асинхронной обработки запросов с последующей синхронной и ресурсоёмкой (CPU-bound) логикой. Главная сложность в том, что асинхронный код отлично справляется с большим количеством запросов к внешним сервисам, но CPU-bound вычисления в той же среде могут существенно снизить пропускную способность. Решение — вынести тяжёлую обработку в отдельный пул процессов.

Суть задачи

  1. Имеется список кортежей (url, json_data), которых может быть до 1 000 000:

Читать полностью »
image

▍ Введение

При создании нового приложения с нуля, где основным ограничивающим фактором является производительность ввода-вывода, использование asyncio может быть вполне оправданным выбором. С самого начала можно интегрировать неблокирующие библиотеки, совместимые с asyncio, такие как asyncpg и aiohttp. Однако большая часть работы может быть связана с поддержкой уже существующего кода, который использует блокирующие библиотеки ввода-вывода, например, requests для HTTP-запросов или psycopg для взаимодействия с базами данных Postgres. Кроме того, возможно, что подходящих библиотек, совместимых с asyncio, просто не существует. В таком случае, как можно извлечь выгоду из конкурентных преимуществ, которые предлагает asyncio?

Многопоточность предоставляет решение для данной задачи. Поскольку блокирующие операции ввода-вывода освобождают глобальную блокировку интерпретатора, мы можем выполнять ввод-вывод параллельно в различных потоках. Аналогично библиотеке multiprocessing, asyncio позволяет использовать пулы потоков, что даёт нам все преимущества многопоточности, не отказываясь от таких API, как gather и wait.Читать полностью »

Публикуем вторую часть руководства по модулю asyncio в Python, в которой представлены разделы оригинала №3 и 4. Читать головокружительную первую часть.

Полное руководство по модулю asyncio в Python. Часть 2 - 1

3. Когда стоит использовать модуль asyncio

Если описать модуль asyncioЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js