在前后端开发联调前 的提交20260223
This commit is contained in:
38
scripts/ops/poll_v10.py
Normal file
38
scripts/ops/poll_v10.py
Normal file
@@ -0,0 +1,38 @@
|
||||
"""轮询 v10 执行结果(用 history 端点)"""
|
||||
import time, requests, json, sys
|
||||
from pathlib import Path
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
|
||||
|
||||
EXEC_ID = "ac99405f-7e42-44da-8abd-b4a51e7d7563"
|
||||
BASE = "http://localhost:8000"
|
||||
TOKEN_FILE = Path(__file__).parent / ".monitor_token"
|
||||
|
||||
def poll():
|
||||
token = TOKEN_FILE.read_text().strip()
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
for attempt in range(60):
|
||||
r = requests.get(f"{BASE}/api/execution/history?limit=5", headers=headers)
|
||||
if r.status_code != 200:
|
||||
print(f"[{attempt+1}] HTTP {r.status_code}")
|
||||
time.sleep(5)
|
||||
continue
|
||||
items = r.json()
|
||||
match = next((i for i in items if i["id"] == EXEC_ID), None)
|
||||
if not match:
|
||||
print(f"[{attempt+1}] 未找到执行记录")
|
||||
time.sleep(5)
|
||||
continue
|
||||
status = match.get("status", "unknown")
|
||||
print(f"[{attempt+1}] status={status}, exit_code={match.get('exit_code')}, duration_ms={match.get('duration_ms')}")
|
||||
if status in ("success", "failed", "error"):
|
||||
return match
|
||||
time.sleep(5)
|
||||
print("超时")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = poll()
|
||||
if result:
|
||||
print(json.dumps(result, indent=2, ensure_ascii=False))
|
||||
Reference in New Issue
Block a user