diff --git a/app.py b/app.py index ce95e6b..0b68841 100644 --- a/app.py +++ b/app.py @@ -583,45 +583,6 @@ def ws_task(ws): except Exception: pass -# ---------------- WebSocket: live tail zadań ---------------- -@sock.route("/ws/task") -def ws_task(ws): - # (bez zmian – jak w mojej poprzedniej wersji) - q = ws.environ.get("QUERY_STRING", "") - params = {} - for part in q.split("&"): - if not part: continue - k, _, v = part.partition("=") - params[k] = v - upid = params.get("upid", "").strip() - node = params.get("node", "").strip() - if not upid or not node: - ws.send(json.dumps({"type":"error","error":"upid and node are required"})) - return - start = 0 - try: - while True: - st = get_json(["pvesh", "get", f"/nodes/{node}/tasks/{upid}/status"]) or {} - ws.send(json.dumps({"type":"status","status":st})) - lines = get_json(["pvesh", "get", f"/nodes/{node}/tasks/{upid}/log", "-start", str(start)]) or [] - if isinstance(lines, list) and lines: - for ln in lines: - txt = (ln.get("t") if isinstance(ln, dict) else None) - if txt: - ws.send(json.dumps({"type":"log","line":txt})) - try: - start = max((int(x.get("n", start)) for x in lines if isinstance(x, dict)), default=start) + 1 - except Exception: - pass - if isinstance(st, dict) and (str(st.get("status","")).lower() == "stopped" or st.get("exitstatus")): - ok = (str(st.get("exitstatus","")).upper() == "OK") - ws.send(json.dumps({"type":"done","ok":ok,"exitstatus":st.get("exitstatus")})) - break - time.sleep(1.2) - except Exception: - try: ws.close() - except Exception: pass - # ---------------- WebSocket: broadcast observe per sid ---------------- @sock.route("/ws/observe") def ws_observe(ws):