67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class FlowerWorkerItem(BaseModel):
|
|
worker: str
|
|
status: str
|
|
queue_names: list[str] = Field(default_factory=list)
|
|
registered_count: int = 0
|
|
processed_count: int = 0
|
|
concurrency: int = 0
|
|
prefetch_count: int = 0
|
|
active_count: int = 0
|
|
reserved_count: int = 0
|
|
scheduled_count: int = 0
|
|
last_heartbeat_at: datetime | None = None
|
|
|
|
|
|
class FlowerWorkersSummary(BaseModel):
|
|
total: int = 0
|
|
online: int = 0
|
|
offline: int = 0
|
|
|
|
|
|
class FlowerWorkersOverviewResponse(BaseModel):
|
|
generated_at: datetime
|
|
workers: list[FlowerWorkerItem] = Field(default_factory=list)
|
|
summary: FlowerWorkersSummary = Field(default_factory=FlowerWorkersSummary)
|
|
|
|
|
|
class FlowerTaskItem(BaseModel):
|
|
task_id: str
|
|
name: str
|
|
state: str
|
|
source: str
|
|
worker: str
|
|
queue_name: str | None = None
|
|
args_text: str | None = None
|
|
kwargs_text: str | None = None
|
|
eta: datetime | None = None
|
|
received_at: datetime | None = None
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
runtime_seconds: float | None = None
|
|
result_text: str | None = None
|
|
exception_text: str | None = None
|
|
|
|
|
|
class FlowerWorkerTaskSummary(BaseModel):
|
|
active: int = 0
|
|
reserved: int = 0
|
|
scheduled: int = 0
|
|
recent: int = 0
|
|
|
|
|
|
class FlowerWorkerTaskOverviewResponse(BaseModel):
|
|
generated_at: datetime
|
|
worker: str
|
|
active_tasks: list[FlowerTaskItem] = Field(default_factory=list)
|
|
reserved_tasks: list[FlowerTaskItem] = Field(default_factory=list)
|
|
scheduled_tasks: list[FlowerTaskItem] = Field(default_factory=list)
|
|
recent_tasks: list[FlowerTaskItem] = Field(default_factory=list)
|
|
summary: FlowerWorkerTaskSummary = Field(default_factory=FlowerWorkerTaskSummary)
|