Skip to content

Basics

Разделение зависимостей

Propan поддерживает различные брокеры сообщений используя для этого специальные классы

from propan import RedisBroker
from propan import RabbitBroker
from propan import KafkaBroker
from propan import SQSBroker
from propan import NatsBroker

Будьте внимательные! Разные брокеры требуют разных зависимостей. Если вы не установили эти зависимости, импортируемый брокер будет иметь значение None.

Для установки Propan с необходимыми для вашего брокера зависимостями, выберите один из вариантов установки

pip install "propan[async-redis]"
pip install "propan[async-rabbit]"
pip install "propan[async-kafka]"
pip install "propan[async-sqs]"
pip install "propan[async-nats]"

Инициализации брокера

Данные для подключения Propan Broker к вашему брокеру сообщений могут быть переданы 2мя способами:

  1. В конструкторе брокера

    from propan import RedisBroker
    broker = RedisBroker("redis://localhost:6379/")
    
  2. В методе connect

    from propan import RedisBroker
    broker = RedisBroker()
    ...
    await broker.connect("redis://localhost:6379/")
    

  1. В конструкторе брокера

    from propan import RabbitBroker
    broker = RabbitBroker("amqp://guest:guest@localhost:5672/")
    
  2. В методе connect

    from propan import RabbitBroker
    broker = RabbitBroker()
    ...
    await broker.connect("amqp://guest:guest@localhost:5672/")
    
  1. В конструкторе брокера

    from propan import KafkaBroker
    broker = KafkaBroker("localhost:9092")
    
  2. В методе connect

    from propan import KafkaBroker
    broker = KafkaBroker()
    ...
    await broker.connect("localhost:9092")
    
  1. В конструкторе брокера

    from propan import SQSBroker
    broker = SQSBroker("http://localhost:9324")
    
  2. В методе connect

    from propan import SQSBroker
    broker = SQSBroker()
    ...
    await broker.connect("http://localhost:9324")
    
  1. В конструкторе брокера

    from propan import NatsBroker
    broker = NatsBroker("nats://localhost:4222")
    
  2. В методе connect

    from propan import NatsBroker
    broker = NatsBroker()
    ...
    await broker.connect("nats://localhost:4222")
    

В простейшем случае вам хватит первого способа передачи данных для подключения - через конструктор.

Однако, в более сложных сценариях: например, при конфигурировании проекта через переменные окружения вам может понадобиться и второй вариант. Полный пример разобран здесь

Note

Параметры, переданные в connect имеют приоритет над параметрами, переданными в конструктор. Будьте с этим аккуратны.

Кроме этого, повторный вызов connect не приведет ни к какому эффекту. Поэтому вы можете не опосаться, что вызов broker.start() (используется внутри PropanApp для запуска брокера) вызовет какие-либо ошибки.