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
}
]
}