Перейти к основному содержимому

workers

Эндпоинтов: 1

GET /api/workers/stats

Статистика Worker Pool

Авторизация: Cookie (connect.sid) или Bearer PAT

Возвращает агрегированную статистику Python Worker Pool для текущего пользователя.

Модель: один проект = один процесс worker.py (asyncio event loop), внутри — несколько ботов (по tokenId). Активен при USE_WORKER_POOL !== 'false' (по умолчанию включён).

Изоляция (IDOR): в details только воркеры проектов, доступных владельцу/коллаборатору. Агрегаты workers, totalBots, totalMemoryMb пересчитываются после фильтрации. Внутренний pid процесса не возвращается.

Авторизация: session cookie (connect.sid) или Bearer PAT (agentToken). Без личности → 401 (глобальный requireApiAuth).

Клиент: компонент WorkerPoolStatus в панели бота опрашивает эндпоинт каждые 10 с и показывает бейдж «N воркеров · M ботов · RAM» (скрыт, если workers === 0).

Память: memoryMb — RSS процесса воркера (Windows: tasklist, Linux/macOS: ps). При ошибке чтения памяти поле может быть 0.

Пустой ответ (workers: 0): нет запущенных ботов, воркеры уже завершили drain, или Worker Pool отключён в окружении.

Ответы

КодОписание
200Статистика воркеров владельца. Если активных воркеров нет — нули и пустой details.
401Не авторизован (нет session cookie и Bearer PAT)
500Внутренняя ошибка при чтении статистики воркеров
503Глобальный middleware setupGuard: приложение ещё не прошло первоначальную настройку (через /admin). Не специфично для workers — так отвечают почти все /api/* до setup.

Пример ответа 200

{
"workers": 2,
"totalBots": 3,
"totalMemoryMb": 145,
"details": [
{
"projectId": 266,
"botsCount": 1,
"memoryMb": 72
},
{
"projectId": 42,
"botsCount": 2,
"memoryMb": 73
}
]
}