Morget-01 / core /state.py
MGFeng's picture
Update core/state.py
0e0ec37 verified
Raw
History Blame Contribute Delete
1.52 kB
from typing import Dict, Any, Set
import time
workers: Dict[str, Dict[str, Any]] = {}
tasks: Dict[str, Dict[str, Any]] = {}
completed_task_ids: Set[str] = set()
results: list = []
training_active = False
training_target = ""
training_total_tasks = 0
training_completed_tasks = 0
task_counter = 0
result_save_counter = 0
RESULT_SAVE_BATCH = 10
def get_online_workers():
from config import HEARTBEAT_TIMEOUT
now = time.time()
return [wid for wid, w in workers.items() if now - w.get("last_heartbeat", 0) < HEARTBEAT_TIMEOUT]
def get_worker_by_id(worker_id: str):
return workers.get(worker_id)
def add_worker(worker_id: str, data: Dict):
workers[worker_id] = data
def update_worker(worker_id: str, **kwargs):
if worker_id in workers:
workers[worker_id].update(kwargs)
def remove_worker(worker_id: str):
if worker_id in workers:
del workers[worker_id]
def get_task(task_id: str):
return tasks.get(task_id)
def add_task(task_id: str, task_data: Dict):
tasks[task_id] = task_data
def update_task(task_id: str, **kwargs):
if task_id in tasks:
tasks[task_id].update(kwargs)
def remove_task(task_id: str):
if task_id in tasks:
del tasks[task_id]
def get_pending_tasks():
return [t for t in tasks.values() if t.get("status") == "pending"]
def get_assigned_tasks():
return [t for t in tasks.values() if t.get("status") == "assigned"]
def get_completed_tasks():
return [t for t in tasks.values() if t.get("status") == "completed"]