Ver Fonte

新增前端用户选择代理提交到 worker 控制

mrh há 9 meses atrás
pai
commit
58067d5925

+ 3 - 0
ui/backend/config.yaml

@@ -1,3 +1,6 @@
+backend:
+  host: localhost
+  port: 5835
 browser:
   exe_path: G:\code\upwork\zhang_crawl_bio\download\chrome-win\chrome.exe
   no_imgs: true

+ 1 - 1
ui/backend/main.py

@@ -59,4 +59,4 @@ app.include_router(worker_router, prefix="/api/worker", tags=["worker"])
 if __name__ == "__main__":
     import uvicorn
     # 注意: 由于涉及到多进程管理机制,因此不能使用 reload 。例如 uvicorn main:app --port 5835 --reload
-    uvicorn.run(app, host="localhost", port=5835)
+    uvicorn.run(app, host=config.backend.host, port=config.backend.port)

+ 2 - 3
ui/backend/routers/worker.py

@@ -1,4 +1,3 @@
-import subprocess
 from fastapi import APIRouter, HTTPException, Request, Depends
 from fastapi.responses import JSONResponse, StreamingResponse
 import httpx
@@ -122,7 +121,6 @@ async def status() -> ResponseStatus:
             celery_status["workers"]["data"]
         )
     
-    logger.info(f"Filtered celery_status: {celery_status}")
     return ResponseStatus(
         endpoint=Endpoint(health=health),
         browser_config=config.browser,
@@ -132,6 +130,7 @@ async def status() -> ResponseStatus:
 class StartupRequest(BaseModel):
     worker_name: str
     action: str
+    select_proxy: Optional[str] = ''
     data: Optional[Dict] = {}
 
 @router.post("/ctrl", tags=["worker"])
@@ -145,7 +144,7 @@ async def start_worker(request: StartupRequest):
         logger.info(f"clean {request.data}")
     else:
         raise HTTPException(status_code=400, detail=f"Invalid action: {request.action}")
-    logger.info(f"{request.action} {request.worker_name}")
+    logger.info(f"{request}")
     flower_workers = await celery_worker.check_worker_status()
     
     # 保持数据转换的一致性

+ 5 - 0
ui/backend/utils/config.py

@@ -36,6 +36,10 @@ class Browser(BaseModel):
     exe_path: Optional[str] = str(REPO_BASE_DIR / r"download\chrome-win\chrome.exe")
     no_imgs: Optional[bool] = True
 
+class Backend(BaseModel):
+    host: Optional[str] = "localhost"
+    port: Optional[int] = 5835
+
 class Config(BaseModel):
     sub: Optional[Sub] = Sub()
     select_proxy: Optional[str] = "system"
@@ -44,6 +48,7 @@ class Config(BaseModel):
     worker_backend_py: Optional[str] = str(WORKER_DIR_BASE / r"worker\api\worker_server.py")
     sqluri: Optional[str] = r'G:\code\upwork\zhang_crawl_bio\output\temp.db'
     browser: Optional[Browser] = Browser()
+    backend: Optional[Backend] = Backend()
     redis_port: Optional[int] = None  # Changed to int
     def save(self):
         config_path = get_config_path()

+ 3 - 0
ui/fontend/src/components/WorkerCtrl.vue

@@ -55,8 +55,10 @@
 <script lang="ts" setup>
 import { ref, computed, onMounted, onUnmounted } from 'vue'
 import { ElMessage } from 'element-plus'
+import { useProxyStore } from '../stores/proxyStore'
 
 const backendBaseUrl = import.meta.env.VITE_API_BASE_URL || ''
+const store = useProxyStore()
 const workers = ref<Array<any>>([])
 const loadingStates = ref({
   search: false,
@@ -131,6 +133,7 @@ const sendRequest = async (workerName: string, action: string) => {
       body: JSON.stringify({
         worker_name: workerName,
         action: action,
+        select_proxy: store.selectedProxy, // 使用proxyStore中的当前选择
         data: {}
       })
     })