Схемы¶
Background-схема связей фреймворка¶
sequenceDiagram
autonumber
participant QueueTasks
participant Starter
participant Worker
participant Broker
participant Storage
participant GlobalConfig
QueueTasks->>Starter: Инициализация / конфигурация
Starter->>Worker: Запуск
Starter->>Broker: Запуск
Broker->>Storage: Инициализация / запуск
Storage->>GlobalConfig: Инициализация (если есть)
GlobalConfig-->>Storage: Остановка
Storage-->>Broker: Остановка
Broker-->>Worker: Остановка
Starter-->>QueueTasks: Завершение
Эта диаграмма показывает связь компонентов и правильный порядок запуска:
- Starter запускает только Worker и Broker.
- Broker запускает Storage.
- Storage запускает GlobalConfig, если он присутствует.
- Остановка происходит в обратном порядке.
Обработка задачи сервером¶
sequenceDiagram
autonumber
participant Storage
participant Broker
participant Worker
participant TaskExecutor
Broker->>Storage: Сохранить новую задачу
Broker->>Worker: Передать задачу
Worker->>TaskExecutor: Выполнение задачи
TaskExecutor-->>Worker: Результат выполнения
Worker->>Storage: Сохранить результат
Эта диаграмма отражает фактический процесс:
- Задача сохраняется в Storage.
- Брокер передаёт задачу воркеру.
- Worker вызывает TaskExecutor — заменяемый компонент выполнения задач.
- TaskExecutor выполняет функцию задачи, вызывает middlewares_before/middlewares_after, обрабатывает ошибки и retry.
- Результат передаётся воркеру и сохраняется в Storage.
Создание задачи клиентом¶
sequenceDiagram
autonumber
participant AT as (A)syncTask.add_task()
participant QT as QueueTasks.add_task()
participant Broker
AT->>QT: Подготовка параметров задачи
QT->>Broker: Регистрация новой задачи
Процесс выглядит так:
(A)syncTask.add_task()илиTaskCls().__call__().add_task()подготавливает параметры.- Внутренне всё переводится на
QueueTasks.add_task(). - Брокер принимает задачу и сохраняет её через Storage.
Получение результата задачи клиентом¶
sequenceDiagram
autonumber
participant AT as (A)syncTask.add_task()
participant AR as (A)syncResult.result()
participant QT as QueueTasks
participant Broker
participant Storage
AT->>AR: Создание объекта результата
AR->>QT: Запрос результата
QT->>Broker: Прокси-запрос
Broker->>Storage: Чтение результата
Storage-->>Broker: Данные
Broker-->>QT: Результат
QT-->>AR: Возврат результата
Этапы:
(A)syncTask.add_task()создаёт(A)syncResult.(A)syncResult.result()вызываетQueueTasks, который проксирует запрос.QueueTasks.get()перенаправляется вBroker.get().- Broker запрашивает данные у Storage.
- Storage возвращает результат.
- Результат поднимается обратно через Broker → QueueTasks → (A)syncResult.