Веб-версияОткрыть в Telegram

ПостКак раз сегодня искал фреимворк для организации работы консьюмера RabbitMQ и на глаза попался Propan - декларативный фре…

31 мая 2023
К
Коробка с питоном
Ссылка
нажмите — покажем
Как раз сегодня искал фреимворк для организации работы консьюмера RabbitMQ и на глаза попался Propan - декларативный фреимворк для работы с очередями сообщений. Для чего это нужно? На базе очередей можно построить асинхронную коммуникацию сервисов, а это привет микросервисной архитектуре! Для сравнения, вот столько кода нам нужно написать, чтобы сделать консьюмер при помощи aio_pika: import asyncio import aio_pika async def main(): connection = await aio_pika.connect_robust( "amqp://guest:[email protected]/" ) queue_name = "test_queue" async with connection: channel = await connection.channel() queue = await channel.declare_queue(queue_name) async with queue.iterator() as queue_iter: async for message in queue_iter: async with message.process(): print(message.body) asyncio.run(main()) А вот столько с Propan: from propan import PropanApp, RabbitBroker broker = RabbitBroker("amqp://guest:guest@localhost:5672/") app = PropanApp(broker) @broker.handle("test_queue") async def base_handler(body): print(body) Чистый кайф, не правда ли? Выглядит просто и понятно. Что ещё умеет? 1) Кастить типы сообщений в модельки при помощи Pydantic. 2) Умеет работать с зависимостями (привет DI) 3) Имеет CLI утилитку, которая поможет сгенерировать проект, запустить несколько процессов воркеров, запустить хот-релоад для разработки. 4) А ещё есть огромное количество примеров, как им пользоваться. 5) Бонус - похоже у автора в планах прикрутить AsyncAPI (это как OpenAPI, только для очередей). На данный момент стабильно работает с RabbitMQ, Redis и Nats. Kafka и SQS в бете, а NatsJs, MQTT, Redis Streams и Pulsar в планах. Ну и накиньте звёзд автору, выглядит как то, что в будущем выстрелит :) Github | Документация #библиотека #propan
23 · 680 ·

Рядом в ленте

ККоробка с питономПопался на глаза отличный перевод статьи "Writing Python like it's Rust", который скорее говорит о возможностях аннотаций типов и структур которые их используютККоробка с питономЕсли обычного itertools вам мало, то можно использовать more-itertools. Эта библиотека добавляет огромное количество функций для работы с итераторами. На практи
это сообщение
ККоробка с питономЯ знаю на опыте, как иногда не удобно работать с датами и временем в Питоне. В стандартной библиотеке есть как и большое количество типов данных (date, time, tzККоробка с питономЕсли у вас есть желание понять как работает asyncio, threading или multiprocessing, либо же появились вопросы - рекомендую обратить внимание на superfastpython.
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем