Refactor backend status handling and improve idle management
- Updated the idle-killer logic to treat SwarmUI `empty` and `disabled` states as busy, preventing unnecessary idle time during provisioning. - Enhanced the `wait_backend_idle` function to recognize suspended backends as ready, improving resource utilization and user feedback. - Refined the `install_swarm_comfy` script to skip installation when backends are already present, streamlining the setup process. - Improved the `resolve_llm_runtime` function to prioritize live configuration over stale state notes, ensuring accurate runtime detection. - Added tests to validate the new backend status handling and idle management logic, ensuring robustness and reliability.
This commit is contained in:
+11
-7
@@ -65,11 +65,12 @@ while time.time() < deadline:
|
||||
print(f"BUSY backend={bstat} (Comfy стартует)")
|
||||
elif bstat == "running":
|
||||
print("READY backend=running")
|
||||
elif bstat == "idle":
|
||||
# Suspended backends still installed — first gen wakes them.
|
||||
# Do not burn 2400s waiting for running after AllowIdle.
|
||||
print("READY backend=idle (backends present, suspended)")
|
||||
elif bstat in ("disabled", "all_disabled"):
|
||||
print(f"BUSY backend={bstat}")
|
||||
elif bstat == "idle":
|
||||
# Suspended backends — not ready for generate; keep waiting.
|
||||
print("BUSY backend=idle (бэкенды спят, ждём running)")
|
||||
elif bstat == "errored":
|
||||
print("BUSY backend=errored")
|
||||
else:
|
||||
@@ -176,9 +177,9 @@ def wait_backend_idle(
|
||||
"BUSY backend=loading (Comfy стартует)": "… Comfy стартует",
|
||||
"BUSY backend=some_loading (Comfy стартует)": "… Comfy стартует (часть бэкендов)",
|
||||
"BUSY backend=empty (нужен first-install Comfy)": "… backend пуст — нужен install",
|
||||
"BUSY backend=idle (бэкенды спят, ждём running)": "… бэкенды idle/спят",
|
||||
"BUSY backend=errored": "… backend errored — смотри journalctl -u swarmui",
|
||||
"READY backend=running": "backend ready (running)",
|
||||
"READY backend=idle (backends present, suspended)": "backend ready (idle/suspended)",
|
||||
}
|
||||
while time.time() < deadline:
|
||||
try:
|
||||
@@ -348,6 +349,9 @@ def verify_gpu_env(
|
||||
"dlbackend пуст",
|
||||
"backend=empty",
|
||||
"Install не прогоняли",
|
||||
"available=false",
|
||||
"cuda=none",
|
||||
"без cuda",
|
||||
)
|
||||
|
||||
want_swarm = bool(getattr(cfg, "enable_swarmui", True))
|
||||
@@ -514,9 +518,9 @@ def verify_stack_local(
|
||||
with urllib.request.urlopen(req, timeout=4) as resp:
|
||||
ok = True
|
||||
detail = f"API HTTP {getattr(resp, 'status', 200)}"
|
||||
except Exception:
|
||||
ok = True
|
||||
detail = f"TCP :{port} open"
|
||||
except Exception as exc:
|
||||
ok = False
|
||||
detail = f"HTTP/API fail (TCP open): {str(exc)[:100]}"
|
||||
last.append(ServiceCheck(name, ok, detail, "local"))
|
||||
if last and all(c.ok for c in last):
|
||||
for c in last:
|
||||
|
||||
Reference in New Issue
Block a user