初始化:分布式浏览器控制后台

This commit is contained in:
Your Name
2026-02-12 16:27:43 +08:00
commit 2e9ae4c7d7
25 changed files with 1930 additions and 0 deletions

42
server/api/workers.py Normal file
View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""
Worker 查询 API。
"""
from fastapi import APIRouter, HTTPException
from typing import List
from server.models import WorkerOut
from server.core.worker_manager import worker_manager
router = APIRouter(prefix="/api/workers", tags=["workers"])
@router.get("", response_model=List[WorkerOut])
async def list_workers():
"""获取所有已注册的 Worker含在线状态与浏览器列表"""
workers = worker_manager.get_all_workers()
return [
WorkerOut(
worker_id=w.worker_id,
worker_name=w.worker_name,
browsers=w.browsers,
online=w.online,
current_task_id=w.current_task_id,
)
for w in workers
]
@router.get("/{worker_id}", response_model=WorkerOut)
async def get_worker(worker_id: str):
"""获取指定 Worker 的详情。"""
w = worker_manager.get_worker(worker_id)
if not w:
raise HTTPException(status_code=404, detail=f"Worker {worker_id} 不存在")
return WorkerOut(
worker_id=w.worker_id,
worker_name=w.worker_name,
browsers=w.browsers,
online=w.online,
current_task_id=w.current_task_id,
)