Skip to content

Конфигурация сервера REST API

Конфигурация

Настройка логирования Настройка мониторинга Настройки CORS Кофигурация сессии Кофигурация статических файлов Кофигурация openapi Настройка отладки

Bases: BaseSettings

Data.Rentgen REST API settings.

Application can be configured in 2 ways:

  • By explicitly passing settings object as an argument to :obj:application_factory <data_rentgen.server.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.logging.preset = "json"
DATA_RENTGEN__LOGGING__PRESET=json

# same as settings.server.debug = True
DATA_RENTGEN__SERVER__DEBUG=True
Source code in data_rentgen/server/settings/__init__.py
13
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
class ServerApplicationSettings(BaseSettings):
    """Data.Rentgen REST API settings.

    Application can be configured in 2 ways:

    * By explicitly passing ``settings`` object as an argument to :obj:`application_factory <data_rentgen.server.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.logging.preset = "json"
        DATA_RENTGEN__LOGGING__PRESET=json

        # same as settings.server.debug = True
        DATA_RENTGEN__SERVER__DEBUG=True
    """  # noqa: E501

    auth: AuthSettings = Field(
        default_factory=AuthSettings,
        description="Auth settings",
    )
    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-server-logging>`",
    )
    server: ServerSettings = Field(
        default_factory=ServerSettings,
        description=":ref:`Server settings <configuration-server>`",
    )

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

Bases: BaseModel

Data.Rentgen REST API server-specific settings.

Examples

.. code-block:: bash

DATA_RENTGEN__SERVER__DEBUG=True
DATA_RENTGEN__SERVER__MONITORING__ENABLED=True
DATA_RENTGEN__SERVER__CORS__ENABLED=True
DATA_RENTGEN__SERVER__REQUEST_ID__ENABLED=True
DATA_RENTGEN__SERVER__OPENAPI__ENABLED=True
DATA_RENTGEN__SERVER__OPENAPI__SWAGGER__ENABLED=True
DATA_RENTGEN__SERVER__OPENAPI__REDOC__ENABLED=True
Source code in data_rentgen/server/settings/server.py
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
63
64
65
66
67
68
69
70
class ServerSettings(BaseModel):
    """Data.Rentgen REST API server-specific settings.

    Examples
    --------

    .. code-block:: bash

        DATA_RENTGEN__SERVER__DEBUG=True
        DATA_RENTGEN__SERVER__MONITORING__ENABLED=True
        DATA_RENTGEN__SERVER__CORS__ENABLED=True
        DATA_RENTGEN__SERVER__REQUEST_ID__ENABLED=True
        DATA_RENTGEN__SERVER__OPENAPI__ENABLED=True
        DATA_RENTGEN__SERVER__OPENAPI__SWAGGER__ENABLED=True
        DATA_RENTGEN__SERVER__OPENAPI__REDOC__ENABLED=True
    """

    debug: bool = Field(
        default=False,
        description=textwrap.dedent(
            """
            :ref:`Enable debug output in responses <configuration-server-debug>`.
            Do not use this on production!
            """,
        ),
    )
    cors: CORSSettings = Field(
        default_factory=CORSSettings,
        description=":ref:`CORS settings <configuration-server-cors>`",
    )
    monitoring: MonitoringSettings = Field(
        default_factory=MonitoringSettings,
        description=":ref:`Monitoring settings <configuration-server-monitoring>`",
    )
    request_id: RequestIDSettings = Field(
        default_factory=RequestIDSettings,
        description=":ref:`RequestID settings <configuration-server-debug>`",
    )
    application_version: ApplicationVersionSettings = Field(
        default_factory=ApplicationVersionSettings,
        description=":ref:`Application version settings <configuration-server-debug>`",
    )
    static_files: StaticFilesSettings = Field(
        default_factory=StaticFilesSettings,
        description=":ref:`Static files settings <configuration-server-static-files>`",
    )
    openapi: OpenAPISettings = Field(
        default_factory=OpenAPISettings,
        description=":ref:`OpenAPI.json settings <configuration-server-openapi>`",
    )
    session: SessionSettings = Field(
        default_factory=SessionSettings,  # type: ignore[arg-type]
        description=":ref:`Session settings <configuration-server-session>`",
    )