61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TaskMonitorBucketItem(BaseModel):
|
|
key: str
|
|
label: str
|
|
count: int
|
|
|
|
|
|
class TaskMonitorWorkerItem(BaseModel):
|
|
worker: str
|
|
online: bool = True
|
|
queue_names: list[str] = Field(default_factory=list)
|
|
max_concurrency: int = 0
|
|
prefetch_count: int = 0
|
|
uptime_seconds: int = 0
|
|
processed_total: int = 0
|
|
active_count: int = 0
|
|
reserved_count: int = 0
|
|
scheduled_count: int = 0
|
|
|
|
|
|
class TaskMonitorQueueItem(BaseModel):
|
|
name: str
|
|
pending_count: int = 0
|
|
consumer_count: int = 0
|
|
active_count: int = 0
|
|
reserved_count: int = 0
|
|
scheduled_count: int = 0
|
|
|
|
|
|
class TaskMonitorTaskItem(BaseModel):
|
|
task_id: str
|
|
name: str
|
|
state: str
|
|
queue_name: str | None = None
|
|
worker: str | None = None
|
|
retries: int = 0
|
|
eta: datetime | None = None
|
|
started_at: datetime | None = None
|
|
done_at: datetime | None = None
|
|
runtime_seconds: float | None = None
|
|
error: str | None = None
|
|
|
|
|
|
class TaskMonitorOverviewResponse(BaseModel):
|
|
generated_at: datetime
|
|
broker_url: str = ""
|
|
result_backend: str = ""
|
|
workers_online: int = 0
|
|
worker_concurrency_total: int = 0
|
|
queue_pending_total: int = 0
|
|
task_state_buckets: list[TaskMonitorBucketItem] = Field(default_factory=list)
|
|
workers: list[TaskMonitorWorkerItem] = Field(default_factory=list)
|
|
queues: list[TaskMonitorQueueItem] = Field(default_factory=list)
|
|
tasks: list[TaskMonitorTaskItem] = Field(default_factory=list)
|