63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""快速检查第四次执行状态。"""
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import requests
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
|
|
|
|
TOKEN_FILE = Path(__file__).parent / ".monitor_token"
|
|
BASE = "http://localhost:8000"
|
|
EXECUTION_ID = "efd4f421-ee10-4244-833f-7b2d68c3c05b"
|
|
REFRESH_TOKEN = (
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
|
|
"eyJzdWIiOiIxIiwic2l0ZV9pZCI6Mjc5MDY4NTQxNTQ0MzI2OSwidHlwZSI6InJlZnJlc2giLCJleHAiOjE3NzIyNjM0NjN9."
|
|
"XYoda5lfxNtTSAGWoLlYhS9cA-hTK9iqK0SqUyn2KV4"
|
|
)
|
|
|
|
# 刷新 token
|
|
resp = requests.post(f"{BASE}/api/auth/refresh", json={"refresh_token": REFRESH_TOKEN}, timeout=10)
|
|
if resp.status_code != 200:
|
|
print(f"刷新失败: {resp.status_code}")
|
|
sys.exit(1)
|
|
token = resp.json()["access_token"]
|
|
TOKEN_FILE.write_text(token, encoding="utf-8")
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
|
|
# 查询执行历史
|
|
r = requests.get(f"{BASE}/api/execution/history?limit=5", headers=headers, timeout=15)
|
|
if r.status_code != 200:
|
|
print(f"查询失败: {r.status_code} {r.text[:200]}")
|
|
sys.exit(1)
|
|
|
|
target = next((h for h in r.json() if h["id"] == EXECUTION_ID), None)
|
|
if not target:
|
|
print("未找到执行记录")
|
|
sys.exit(1)
|
|
|
|
status = target.get("status")
|
|
dur = target.get("duration_ms")
|
|
dur_s = f"{dur/1000:.1f}s" if dur else "—"
|
|
print(f"status={status}, duration={dur_s}, exit_code={target.get('exit_code')}")
|
|
|
|
if status in ("success", "failed", "cancelled"):
|
|
# 拉取日志
|
|
lr = requests.get(f"{BASE}/api/execution/{EXECUTION_ID}/logs", headers=headers, timeout=30)
|
|
if lr.status_code == 200:
|
|
ld = lr.json()
|
|
from _env_paths import get_output_path
|
|
out = get_output_path("SYSTEM_LOG_ROOT")
|
|
outfile = out / "2026-02-21__etl_run_raw_v4.json"
|
|
outfile.write_text(json.dumps(ld, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
print(f"日志已保存: {outfile}")
|
|
# 打印 error_log 末尾
|
|
el = (ld.get("error_log") or "").strip().split("\n")
|
|
print(f"--- error_log 末尾 50 行 (共 {len(el)} 行) ---")
|
|
for line in el[-50:]:
|
|
print(line)
|
|
else:
|
|
print(f"日志获取失败: {lr.status_code}")
|