или авторизуйтесь, если у вас он уже есть
Обычно, говоря об асинхронных микросервисах на Python, подразумевают: взаимодействие по REST, каждому микросервису - по базе данных, и пишем на FastAPI. Я расскажу, как и почему мы последовательно отказались в центральном сервисе платформы ботов общения с клиентами от REST как основной коммуникации.
Вместо него брокер - значит, Kafka или RabbitMQ. Но у нас уже был Redis под рукой, и он оказался как минимум не хуже как брокер.
У нас нет REST - значит, и FastAPI не нужен. Что вместо него? Да сам ванильный asyncio - отличная основа для асинхронного сервиса.
Да, кстати, о базе данных - а она правда нужна? Нам вот оказалась не нужна - в этом сервисе опять-таки хватило Redis и отложенной согласованности.
В множестве воркерах нужно согласованно запускать задачи по таймеру? Нет, Celery не берём - это слишком для нашего минимализма, опять обойдёмся asyncio и Redis.
Ну и напоследок - решим с помощью Redis’а давние проблемы актуальности локального кеша в воркере и моментального обновления динамической конфигурации.
А если вдруг понадобятся LLM - он нам и векторный поиск для эмбеддингов обеспечит.