"""验直连后端端口这条老路还通不通——调度层是加在旁边的,不该动到它。 走的是 API.md 里那段完整调用示例的形状:POST 拿 id → 轮询 → 下载。 """ import json, time, urllib.request API = "http://127.0.0.1:8010" SPEC = {"prompt": "一只橘猫趴在洒满阳光的窗台上,慢慢眨眼", "frames": 22, "steps": 4, "turbo": True, "seed": 99} def call(path, data=None, timeout=60): req = urllib.request.Request(API + path, data=data, headers={"Content-Type": "application/json"} if data else {}) with urllib.request.urlopen(req, timeout=timeout) as r: return json.load(r) print("health:", call("/health")) job = call("/v1/videos", json.dumps(SPEC).encode()) print("提交:", job) while True: time.sleep(20) j = call(f"/v1/videos/{job['id']}") print(" ", j["status"], j.get("elapsed_seconds", 0), "s", flush=True) if j["status"] in ("done", "failed"): break if j["status"] == "failed": raise SystemExit("失败: " + j["error"]) with urllib.request.urlopen(f"{API}/v1/videos/{job['id']}/file", timeout=300) as r: data = r.read() print(f"下载 {len(data)} 字节,后端记录 {j['size_bytes']},一致={len(data) == j['size_bytes']}")