Top.Mail.Ru
Разработка
DevPyConf | Python
Чем вам asyncio не фреймворк, а Redis не брокер? Как сделать сервис ядра сложной системы в стиле максимального минимализма - без REST, фреймворка и базы данных, не привлекая внимания санитаров.
3 октября
14.40-15.20
Green 6

Обычно, говоря об асинхронных микросервисах на Python, подразумевают: взаимодействие по REST, каждому микросервису - по базе данных, и пишем на FastAPI. Я расскажу, как и почему мы последовательно отказались в центральном сервисе платформы ботов общения с клиентами от REST как основной коммуникации.

Вместо него брокер - значит, Kafka или RabbitMQ. Но у нас уже был Redis под рукой, и он оказался как минимум не хуже как брокер.

У нас нет REST - значит, и FastAPI не нужен. Что вместо него? Да сам ванильный asyncio - отличная основа для асинхронного сервиса.

Да, кстати, о базе данных - а она правда нужна? Нам вот оказалась не нужна - в этом сервисе опять-таки хватило Redis и отложенной согласованности.

В множестве воркерах нужно согласованно запускать задачи по таймеру? Нет, Celery не берём - это слишком для нашего минимализма, опять обойдёмся asyncio и Redis.

Ну и напоследок - решим с помощью Redis’а давние проблемы актуальности локального кеша в воркере и моментального обновления динамической конфигурации.

А если вдруг понадобятся LLM - он нам и векторный поиск для эмбеддингов обеспечит.