mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
65 lines
3.0 KiB
ReStructuredText
65 lines
3.0 KiB
ReStructuredText
.. _root_api_orchestrator_index:
|
||
|
||
Orchestrator
|
||
====================
|
||
|
||
``Orchestrator`` — это высокоуровневый компонент, который конфигурирует и оркестрирует приложение, парсер командной строки, DI и остальные компоненты, находящиеся по иерархии на уровне с ``App``.
|
||
|
||
В то время как ``App`` отвечает за логику интерактивной сессии (ввод команд, маршрутизация), ``Orchestrator`` подготавливает окружение для его работы и служит точкой входа в приложение.
|
||
|
||
-----
|
||
|
||
Инициализация
|
||
-------------
|
||
|
||
.. code-block:: python
|
||
:linenos:
|
||
|
||
DEFAULT_ARGPARSER: ArgParser = ArgParser(processed_args=[])
|
||
|
||
|
||
.. code-block:: python
|
||
:linenos:
|
||
|
||
def __init__(self, arg_parser: ArgParser = DEFAULT_ARGPARSER,
|
||
custom_providers: list[Provider] = [],
|
||
auto_inject_handlers: bool = True) -> None
|
||
|
||
Создаёт и конфигурирует экземпляр ``Orchestrator``.
|
||
|
||
* ``arg_parser``: Экземпляр ``ArgParser``, отвечающий за парсинг аргументов командной строки при запуске скрипта (не путать с командами в интерактивном режиме).
|
||
* ``custom_providers``: Список пользовательских провайдеров ``dishka.Provider`` для добавления ваших сервисов (например, подключений к БД или API-клиентов) в di-контейнер.
|
||
* ``auto_inject_handlers``: Если **True** (по умолчанию), ``dishka`` автоматически внедрит зависимости в обработчики команд, инспектируя их сигнатуры.
|
||
|
||
-----
|
||
|
||
Основные методы
|
||
----------------
|
||
|
||
.. py:method:: start_polling(self, app: App) -> None
|
||
|
||
Это главный метод, который запускает приложение. Он запускает бесконечный цикл ввода -> вывода.
|
||
|
||
:param app: Экземпляр ``App``, который будет запущен.
|
||
|
||
-----
|
||
|
||
Назначение и использование
|
||
----------------------------
|
||
|
||
``Orchestrator`` абстрагирует сложность, связанную с настройкой DI и парсингом стартовых аргументов.
|
||
|
||
Такой подход разделяет ответственности: ``App`` отвечает за логику интерактивной сессии, а ``Orchestrator`` — за подготовку окружения и запуск приложения.
|
||
|
||
**Пример использования:**
|
||
|
||
.. literalinclude:: ../../../code_snippets/orchestrator/snippet.py
|
||
:language: python
|
||
|
||
.. toctree::
|
||
:hidden:
|
||
|
||
argparser
|
||
arguments
|
||
argspace
|