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.