Пару месяцев назад я рассказал вам о своем фреймворке для работы с различными брокерами сообщений - Propan.
Тезисно повторю: это идейный наследник FastAPI, но для написания асинхронных микросервисов (привет, Kombu). Он настолько облегчает взаимодействие с брокерами сообщений, что данный архитектурный паттерн переходит из разряда
слишком сложно, это для хайлоад, некогда разбираться
в разряд
а давай отдадим нашему стажеру сервис, он по документации разберется
Иногда полезно оглянуться назад, подвести черту и сложить в одну кучу все, что накопилось за время работы. И вот этот момент настал и для Propan. Я просто хочу вам рассказать о тех важных изменениях, которые я внедрил за прошедшие два месяца и планах на будущее.
Сейчас ваш фидбек очень важен, так как PropanV2 находится в активной работе и любое из ваших предложений сейчас может повлиять на него.
Что было
Напомню основные фичи, которые были представлены на момент первой статьи:
Сериализация входящих сообщений с помощью Pydantic
Поддержка RabbitMQ, Nats, Redis Pub/Sub через идентичные интерфейсы
Собственная CLI с хотрелоадом, шаблоном проектов, воркерами и тд и тп
In-memory тесты
Поддержка RPC over MQ
Что стало
Pydantic
Наверное, все слышали о релизе PydanticV2, написанном на Rust. Это все тот же самый Pydantic, но в 3-40 раз быстрее.
Раз уж мы строим свой инструмент на базе Pydantic, то мы просто обязаны внедрить поддержку нового релиза, причем следуя лучшим практикам! Поэтому Propan теперь поддерживает как PydanticV2, так и PydanticV1. Устанавливайте любой - не ошибетесь.
AsyncAPI
Раз уж мы следуем за FastAPI, то не можем упустить и такую важную особенность, как автоматическое генерирование документации проекта. Правда FastAPI использует OpenAPI схему, которая подходит только для HTTP сервисов.
Поэтому Propan автоматически генерирует для вас схему AsyncAPI, созданную специально для асинхронных сервисов.
Вы можете как сгенерировать отдельный файл и передать его другой команде, так и развернуть документацию как статичную HTML страницу (swagger-like), чтобы предоставить всем смежным командам удобный доступ.
Новые брокеры
Добавлена поддержка Kafka, SQS и NatsJS. Если вы ждали поддержку чего-то из этого для того, чтобы начать использовать Propan - можете больше не ждать, просто используйте!
Другие изменения
Добавлен функционал Middlewares, Routers для разделения приложения на подключаемые модули, добавлена возможность кастомизировать сериализацию (например через protobuf), добавлено примерно миллиард (по моим субъективным ощущениям) страниц документации, исправлено N+1 критичных и не очень багов, а также внесены еще какие-то там другие изменения.
Community
За это время проект вырос с 70 звезд на гите до 300, прирос парой part-time контрибуторов, засветился в PythonBytes подкасте, был взят на вооружение несколькими компаниями (как минимум 2 из них привлекали меня для консультации по внедрению) и получил внушительное количество позитивного фидбека от пользователей.
Дальнейшие планы
Если проект существует больше одного месяца - это уже легаси, правильно? А что мы делаем с легаси? - Переписываем!
Так как Propan существует уже целых 4 месяца, то мной было принято волевое решение полностью переписать его на новую архитектуру. Как оказалось, на старую просто не ложатся некоторые из запланированных фич.
Но не стоит бояться! Абсолютно все тесты старой версии отрабатывают также и на новой, а общее количество тестов удвоено (значит новая версия в 2 раза лучше, верно?).
Этот мажорный релиз зафиксирует архитектуру Propan и будет вводиться очень осторожно и постепенно, поддерживая обратную совместимость везде, где только возможно. Его бета версия планируется на начало сентября, так что у вас есть время предложить свое видение того, какого функционала не хватает фреймворку, а также повлиять на уже принятые решения.
Заключение
Если вы работаете с брокерами сообщений, но еще не пробовали Propan - самое время это исправить. Фреймворк активно развивается, растет день ото дня, а ошибки, с которыми сталкиваются пользователи в процессе эксплуатации исправляются в тот же день.
В процессе работы над проектом ни один разработчик от выгорания кажется не пострадал. Но, тем не менее, мне нужен ваш фидбек чтобы продолжать так же активно работать над тем, чтобы делать экосистему Python лучше.
Также мне нужно ваше видение о том, каким должен быть инструмент для работы с брокерами сообщений, поэтому буду рад любому фидбеку на тему PropanV2.
Ссылки
Тут вы можете поставить звезду
Propan: https://github.com/Lancetnik/Propan
Тут вы можете включиться в обсуждение
Propan discord: https://discord.gg/ChhMXJpvz7
А тут вы можете посмотреть на свежий драфт
PropanV2: https://github.com/Lancetnik/Propan/tree/v2/examples