Перейти к основному содержимому
Версия: 1.7.5

Конфигурация (module_sdk.config)

Константы типов задач

from module_sdk.config.config_model import (
TASK_ASSET_TYPE_HOST, # "host"
TASK_ASSET_TYPE_EXTERNAL_ADDRESS, # "external_address"
TASK_ASSET_TYPE_EMPTY, # "empty"
)

Additional

from module_sdk.config.config_model import Additional

Pydantic-модель блока additional в config.yaml.

ПолеТипПо умолчаниюОписание
portStrictIntПорт HTTP-сервера модуля
max_chunk_sizeOptional[int]500Максимальное количество ассетов в одном пакете
run_place_typeOptional[str]"empty"Тип места запуска

BaseConfig

from module_sdk.config.config_model import BaseConfig

Базовая Pydantic-модель конфигурации. Содержит единственное поле additional: Additional.

BaseConfig.read_yaml(file_path, config_model) -> config_model

Статический метод загрузки конфигурации из YAML-файла.

ПараметрТипОписание
file_pathstrПуть к YAML-файлу
config_modeltypeКласс конфигурации (BaseConfig или наследник)

Возвращает: экземпляр config_model, заполненный данными из YAML.

getConfigPath() -> str

from module_sdk.config.config_model import getConfigPath

Возвращает путь к файлу конфигурации из переменной окружения CONFIG_FILE. Вызывает EnvironmentError, если переменная не установлена. Также загружает .env файл через python-dotenv.

Глобальный экземпляр config

from module_sdk.config.config_model import config

Глобальный экземпляр BaseConfig, создается при импорте модуля. Тип: BaseConfig.

!!! quote

Внимание: из-за создания config при импорте переменная CONFIG_FILE должна быть установлена до первого импорта SDK.

Расширение конфигурации

Для добавления кастомных полей наследуйте Additional и BaseConfig. Все кастомные поля добавляются внутрь additional и соответственно располагаются внутри блока additional: в YAML-файле:

# config.py
from typing import Optional
from module_sdk.config.config_model import Additional, BaseConfig, getConfigPath

class ConnectorAdditional(Additional):
"""Ваши поля — добавляются к стандартным port, max_chunk_size, run_place_type."""
api_url: str
api_token: str
page_size: Optional[int] = 100

class ConnectorConfig(BaseConfig):
additional: ConnectorAdditional

# Важно: создать свой экземпляр конфига, а не использовать глобальный
config = ConnectorConfig.read_yaml(getConfigPath(), ConnectorConfig)

Соответствующий config.yaml:

additional:
port: 8383
max_chunk_size: 500
api_url: "https://external-system.example.com/api/v1"
api_token: "[[API_TOKEN]]"
page_size: 100

!!! warning

Все кастомные поля должны быть внутри additional:. Поля на корневом уровне YAML будут проигнорированы, т.к. BaseConfig содержит единственное поле additional.