Skip to content

Конфигурация консьюмера

Bases: BaseSettings

Data.Rentgen Kafka consumer settings.

Application can be configured in 2 ways:

  • By explicitly passing settings object as an argument to :obj:application_factory <data_rentgen.consumer.application_factory>
  • By setting up environment variables matching a specific key.

All environment variable names are written in uppercase and should be prefixed with DATA_RENTGEN__. Nested items are delimited with __.

More details can be found in Pydantic documentation <https://docs.pydantic.dev/latest/concepts/pydantic_settings/>_.

Examples

.. code-block:: bash

# same as settings.database.url = "postgresql+asyncpg://postgres:postgres@localhost:5432/data_rentgen"
DATA_RENTGEN__DATABASE__URL=postgresql+asyncpg://postgres:postgres@localhost:5432/data_rentgen

# same as settings.kafka.bootstrap_servers = ["kafka1:9092", "kafka2:9092"]
DATA_RENTGEN__KAFKA__BOOTSTRAP_SERVERS="kafka1:9092,kafka2:9092"

# same as settings.logging.preset = "json"
DATA_RENTGEN__LOGGING__PRESET=json
Source code in data_rentgen/consumer/settings/__init__.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class ConsumerApplicationSettings(BaseSettings):
    """Data.Rentgen Kafka consumer settings.

    Application can be configured in 2 ways:

    * By explicitly passing ``settings`` object as an argument to :obj:`application_factory <data_rentgen.consumer.application_factory>`
    * By setting up environment variables matching a specific key.

      All environment variable names are written in uppercase and should be prefixed with ``DATA_RENTGEN__``.
      Nested items are delimited with ``__``.

    More details can be found in `Pydantic documentation <https://docs.pydantic.dev/latest/concepts/pydantic_settings/>`_.

    Examples
    --------

    .. code-block:: bash

        # same as settings.database.url = "postgresql+asyncpg://postgres:postgres@localhost:5432/data_rentgen"
        DATA_RENTGEN__DATABASE__URL=postgresql+asyncpg://postgres:postgres@localhost:5432/data_rentgen

        # same as settings.kafka.bootstrap_servers = ["kafka1:9092", "kafka2:9092"]
        DATA_RENTGEN__KAFKA__BOOTSTRAP_SERVERS="kafka1:9092,kafka2:9092"

        # same as settings.logging.preset = "json"
        DATA_RENTGEN__LOGGING__PRESET=json
    """  # noqa: E501

    database: DatabaseSettings = Field(
        default_factory=DatabaseSettings,  # type: ignore[arg-type]
        description=":ref:`Database settings <configuration-database>`",
    )
    logging: LoggingSettings = Field(
        default_factory=LoggingSettings,
        description=":ref:`Logging settings <configuration-consumer-logging>`",
    )
    kafka: KafkaSettings = Field(
        description=":ref:`Kafka settings <configuration-consumer-kafka>`",
    )
    consumer: ConsumerSettings = Field(
        default_factory=ConsumerSettings,
        description=":ref:`Consumer settings <configuration-consumer-specific>`",
    )
    producer: ProducerSettings = Field(
        default_factory=ProducerSettings,
        description=":ref:`Producer settings <configuration-producer-specific>`",
    )

    model_config = SettingsConfigDict(env_prefix="DATA_RENTGEN__", env_nested_delimiter="__", extra="forbid")

database = Field(default_factory=DatabaseSettings, description=':ref:`Database settings <configuration-database>`') class-attribute instance-attribute

logging = Field(default_factory=LoggingSettings, description=':ref:`Logging settings <configuration-consumer-logging>`') class-attribute instance-attribute

kafka = Field(description=':ref:`Kafka settings <configuration-consumer-kafka>`') class-attribute instance-attribute

consumer = Field(default_factory=ConsumerSettings, description=':ref:`Consumer settings <configuration-consumer-specific>`') class-attribute instance-attribute

producer = Field(default_factory=ProducerSettings, description=':ref:`Producer settings <configuration-producer-specific>`') class-attribute instance-attribute