Конфигурация (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.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| port | StrictInt | — | Порт HTTP-сервера модуля |
| max_chunk_size | Optional[int] | 500 | Максимальное количество ассетов в одном пакете |
| run_place_type | Optional[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_path | str | Путь к YAML-файлу |
config_model | type | Класс конфигурации (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.