Files
FishServer/fish_api/app/state.py

39 lines
883 B
Python
Raw Normal View History

from __future__ import annotations
import asyncio
from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional
@dataclass
class MeasureSnapshot:
result: List[dict]
video_left: str
video_right: str
updated_at: Optional[datetime] = None
error: Optional[str] = None
raw_prediction_path: Optional[str] = None
@dataclass
class HealthSnapshot:
behavior_result: str
health_result: str
updated_at: Optional[datetime] = None
error: Optional[str] = None
raw_class_en: str = ""
@dataclass
class AppState:
measure_lock: asyncio.Lock = field(default_factory=asyncio.Lock)
action_lock: asyncio.Lock = field(default_factory=asyncio.Lock)
# job status for optional polling业务结果见 SQLite
measure_status: str = "idle"
action_status: str = "idle"
app_state = AppState()