Перейти к содержанию

Stats

Существует встроенный дополнительный компонент (A)syncStats, предназначенный для аналитики и инспекции состояния приложения QTasks. Компонент инициализируется с параметром app=app и предоставляет доступ к метаданным приложения и зарегистрированных задач без их выполнения.

Stats ориентирован на диагностику, отладку, мониторинг конфигурации и построение внешних инструментов (CLI, WebView, панели администрирования).


Возможности

На текущий момент компонент предоставляет инспекционные возможности через объект InspectStats.

InspectStats.inspect

(A)syncStats.inspect → InspectStats

Возвращает объект инспекции, через который доступны методы аналитики.


Информация о приложении

InspectStats.app(json: bool = False)

Позволяет получить полную информацию о текущем экземпляре QTasks.

Пример текстового вывода:

Имя                       : QueueTasks
Метод                     : async
Версия                    : 1.7.0
Конфигурация              : QueueConfig(max_tasks_process=10, running_older_tasks=True,
delete_finished_tasks=False, task_default_priority=0, task_default_decode=None,
logs_default_level_server=10, logs_default_level_client=20, logs_format='%(asctime)s
[%(name)s: %(levelname)s] (%(subname)s) %(message)s', result_time_interval=0.1,
result_statuses_end=['success', 'error', 'cancel'])
Количество задач          : 14
Количество роутеров       : 1
Количество плагинов       : 16
Брокер                    : AsyncRedisBroker
Воркер                    : AsyncWorker
Стартер                   : AsyncStarter
Хранилище                 : AsyncRedisStorage
GlobalConfig              : AsyncRedisGlobalConfig
Лог                       : Logger
Количество инициализаций  : 0
--------------------------------------------------

При json=True метод возвращает структурированный словарь, пригодный для сериализации и передачи во внешние системы.


Информация о задачах

InspectStats.tasks(*tasks: tuple[str], json: bool = False)

Возвращает информацию о зарегистрированных задачах.

  • Без аргументов — по всем задачам.
  • С указанием имён задач — только по выбранным.

Пример (сокращённый вывод для двух задач):

Имя задачи                : sync_test
Приоритет                 : 0
Описание                  : Тестовая синхронная задача с декоратором.
Теги                      : —
Асинхронность             : False
Генерация                 : sync
Self перед задачей        : True
Args                      : self: SyncTask
Kwargs                    : —
Мидлвари после            : [<class 'libs.task_middleware.MyTaskMiddleware'>]
--------------------------------------------------
Имя задачи                : async_test
Приоритет                 : 0
Описание                  : Тестовая асинхронная задача.
Теги                      : —
Асинхронность             : True
Генерация                 : False
Self перед задачей        : False
Args                      : —
Kwargs                    : —
--------------------------------------------------

При json=True данные возвращаются в виде структурированного словаря.


Информация об одной задаче

InspectStats.task(task_name: str, json: bool = False)

Возвращает информацию об одной задаче. По функциональности эквивалентен tasks, но предназначен для точечного запроса.


Использование через CLI

Компонент Stats интегрирован в CLI (на данный момент в синхронном варианте).

Обязательная команда инспекции

qtasks -A app:app stats inspect

Команда выводит базовую информацию и доступные методы инспекции.

Вызов методов InspectStats через CLI

qtasks -A app:app stats inspect <method> <params>

Вызов выполняется через getattr, что позволяет обращаться к любому методу InspectStats.

Пример:

qtasks -A app:app stats inspect tasks task1 task2 json=True

Особенности

  • Stats не инициирует выполнение задач.
  • Компонент работает только с метаданными и конфигурацией.
  • Поддерживается текстовый и JSON-формат вывода.
  • Предназначен для CLI, WebView и внешних инструментов аналитики.

Итог

(A)syncStats предоставляет:

  • централизованную инспекцию приложения;
  • доступ к метаданным задач и конфигурации;
  • основу для мониторинга и администрирования;
  • расширяемый API для будущей аналитики.

Страница оформлена как холст и может использоваться как шаблон для документации аналитических и инспекционных компонентов QTasks.