aboutsummaryrefslogtreecommitdiff
path: root/app/backends/probe.py
diff options
context:
space:
mode:
authorhistoria <historiavg@proton.me>2026-08-24 17:37:34 -0400
committerhistoria <historiavg@proton.me>2026-08-24 17:37:34 -0400
commitd950fc8e64ee508334e608f6045d687d73a464be (patch)
tree87e5539b486c7f15ffba53bbba6ef6bb3a02540e /app/backends/probe.py
parent919544c0931d53bb81904b6212ff14f856549da3 (diff)
downloadtts-audiobook-generator-d950fc8e64ee508334e608f6045d687d73a464be.tar.gz
feat: tui backend server progress and generate script progress
Diffstat (limited to 'app/backends/probe.py')
-rw-r--r--app/backends/probe.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/app/backends/probe.py b/app/backends/probe.py
index ebef86e..efa2963 100644
--- a/app/backends/probe.py
+++ b/app/backends/probe.py
@@ -126,3 +126,26 @@ def same_endpoint(url_a: str, url_b: str) -> bool:
port_a = a.port or (443 if (a.scheme or "http") == "https" else 80)
port_b = b.port or (443 if (b.scheme or "http") == "https" else 80)
return host_a == host_b and port_a == port_b
+
+
+def health_payload(url: str, timeout: float = DEFAULT_TIMEOUT) -> Optional[dict]:
+ """Return the server's ``/health`` JSON document, or None.
+
+ A cheaper, raw check than ``identify_server``: used by the run view's
+ background poll to tell "process alive" from "server answering" without
+ probing every identity endpoint.
+ """
+ if not url:
+ return None
+ return _get_json(f"{url.rstrip('/')}/health", timeout)
+
+
+def faster_model_loaded(url: str, timeout: float = DEFAULT_TIMEOUT) -> bool:
+ """True when a faster server at URL reports its model loaded.
+
+ faster's ``/health`` answers with a ``model_loaded`` flag only after the
+ weights are resident, so this is the "truly ready" signal used while
+ waiting for a started server to become usable.
+ """
+ payload = health_payload(url, timeout)
+ return bool(payload and payload.get("model_loaded"))