初始化:分布式浏览器控制后台
This commit is contained in:
42
server/api/workers.py
Normal file
42
server/api/workers.py
Normal 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,
|
||||
)
|
||||
Reference in New Issue
Block a user