Spaces:
Running
Running
Anthony Liang commited on
Commit ·
5b0b6a3
1
Parent(s): 8dba63e
pinggy
Browse files
app.py
CHANGED
|
@@ -71,29 +71,54 @@ PREDEFINED_DATASETS = [
|
|
| 71 |
# Global server state
|
| 72 |
_server_state = {
|
| 73 |
"server_url": None,
|
| 74 |
-
"base_url": "
|
| 75 |
}
|
| 76 |
|
| 77 |
|
| 78 |
def discover_available_models(
|
| 79 |
base_url: str = "http://40.119.56.66", port_range: tuple = (8000, 8010)
|
| 80 |
) -> List[Tuple[str, str]]:
|
| 81 |
-
"""Discover available models by pinging ports in the specified range.
|
|
|
|
|
|
|
|
|
|
| 82 |
|
| 83 |
Returns:
|
| 84 |
List of tuples: [(server_url, model_name), ...]
|
| 85 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
available_models = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
start_port, end_port = port_range
|
| 88 |
-
|
| 89 |
for port in range(start_port, end_port + 1):
|
| 90 |
-
server_url = f"{base_url
|
| 91 |
try:
|
| 92 |
-
# Check health endpoint
|
| 93 |
health_url = f"{server_url}/health"
|
| 94 |
health_response = requests.get(health_url, timeout=2.0)
|
| 95 |
if health_response.status_code == 200:
|
| 96 |
-
# Try to get model info for model name
|
| 97 |
try:
|
| 98 |
model_info_url = f"{server_url}/model_info"
|
| 99 |
model_info_response = requests.get(model_info_url, timeout=2.0)
|
|
@@ -102,13 +127,10 @@ def discover_available_models(
|
|
| 102 |
model_name = model_info_data.get("model_path", f"Model on port {port}")
|
| 103 |
available_models.append((server_url, model_name))
|
| 104 |
else:
|
| 105 |
-
# Health check passed but no model info, use port as name
|
| 106 |
available_models.append((server_url, f"Model on port {port}"))
|
| 107 |
-
except:
|
| 108 |
-
# Health check passed but couldn't get model info
|
| 109 |
available_models.append((server_url, f"Model on port {port}"))
|
| 110 |
except requests.exceptions.RequestException:
|
| 111 |
-
# Port not available, continue
|
| 112 |
continue
|
| 113 |
|
| 114 |
return available_models
|
|
@@ -676,9 +698,10 @@ with demo:
|
|
| 676 |
|
| 677 |
base_url_input = gr.Textbox(
|
| 678 |
label="Base Server URL",
|
| 679 |
-
placeholder="http://40.119.56.66",
|
| 680 |
-
value="
|
| 681 |
interactive=True,
|
|
|
|
| 682 |
)
|
| 683 |
|
| 684 |
discover_btn = gr.Button("🔍 Discover Models", variant="primary", size="lg")
|
|
@@ -688,7 +711,7 @@ with demo:
|
|
| 688 |
choices=[],
|
| 689 |
value=None,
|
| 690 |
interactive=True,
|
| 691 |
-
info="
|
| 692 |
)
|
| 693 |
|
| 694 |
server_status = gr.Markdown("Click 'Discover Models' to find available models")
|
|
|
|
| 71 |
# Global server state
|
| 72 |
_server_state = {
|
| 73 |
"server_url": None,
|
| 74 |
+
"base_url": "https://robometer.a.pinggy.link", # Default: Pinggy tunnel or use http://HOST for port scan
|
| 75 |
}
|
| 76 |
|
| 77 |
|
| 78 |
def discover_available_models(
|
| 79 |
base_url: str = "http://40.119.56.66", port_range: tuple = (8000, 8010)
|
| 80 |
) -> List[Tuple[str, str]]:
|
| 81 |
+
"""Discover available models by pinging the base URL as-is, or ports in the specified range.
|
| 82 |
+
|
| 83 |
+
If base_url is a full URL (e.g. https://robometer.a.pinggy.link), it is tried as-is first.
|
| 84 |
+
Otherwise we try base_url:8000, base_url:8001, ... up to end_port.
|
| 85 |
|
| 86 |
Returns:
|
| 87 |
List of tuples: [(server_url, model_name), ...]
|
| 88 |
"""
|
| 89 |
+
base_url = base_url.strip().rstrip("/")
|
| 90 |
+
if not base_url:
|
| 91 |
+
return []
|
| 92 |
+
|
| 93 |
available_models = []
|
| 94 |
+
# Try base_url as-is first (for Pinggy/tunnel URLs like https://robometer.a.pinggy.link)
|
| 95 |
+
try:
|
| 96 |
+
health_url = f"{base_url}/health"
|
| 97 |
+
health_response = requests.get(health_url, timeout=5.0)
|
| 98 |
+
if health_response.status_code == 200:
|
| 99 |
+
try:
|
| 100 |
+
model_info_url = f"{base_url}/model_info"
|
| 101 |
+
model_info_response = requests.get(model_info_url, timeout=5.0)
|
| 102 |
+
if model_info_response.status_code == 200:
|
| 103 |
+
model_info_data = model_info_response.json()
|
| 104 |
+
model_name = model_info_data.get("model_path", base_url)
|
| 105 |
+
available_models.append((base_url, model_name))
|
| 106 |
+
else:
|
| 107 |
+
available_models.append((base_url, base_url))
|
| 108 |
+
except Exception:
|
| 109 |
+
available_models.append((base_url, base_url))
|
| 110 |
+
return available_models
|
| 111 |
+
except requests.exceptions.RequestException:
|
| 112 |
+
pass
|
| 113 |
+
|
| 114 |
+
# Port scan: base_url is a host (e.g. http://40.119.56.66), try ports in range
|
| 115 |
start_port, end_port = port_range
|
|
|
|
| 116 |
for port in range(start_port, end_port + 1):
|
| 117 |
+
server_url = f"{base_url}:{port}"
|
| 118 |
try:
|
|
|
|
| 119 |
health_url = f"{server_url}/health"
|
| 120 |
health_response = requests.get(health_url, timeout=2.0)
|
| 121 |
if health_response.status_code == 200:
|
|
|
|
| 122 |
try:
|
| 123 |
model_info_url = f"{server_url}/model_info"
|
| 124 |
model_info_response = requests.get(model_info_url, timeout=2.0)
|
|
|
|
| 127 |
model_name = model_info_data.get("model_path", f"Model on port {port}")
|
| 128 |
available_models.append((server_url, model_name))
|
| 129 |
else:
|
|
|
|
| 130 |
available_models.append((server_url, f"Model on port {port}"))
|
| 131 |
+
except Exception:
|
|
|
|
| 132 |
available_models.append((server_url, f"Model on port {port}"))
|
| 133 |
except requests.exceptions.RequestException:
|
|
|
|
| 134 |
continue
|
| 135 |
|
| 136 |
return available_models
|
|
|
|
| 698 |
|
| 699 |
base_url_input = gr.Textbox(
|
| 700 |
label="Base Server URL",
|
| 701 |
+
placeholder="https://robometer.a.pinggy.link or http://40.119.56.66",
|
| 702 |
+
value="https://robometer.a.pinggy.link",
|
| 703 |
interactive=True,
|
| 704 |
+
info="Full URL (e.g. Pinggy tunnel) or host; discovery tries URL as-is first, then ports 8000-8010",
|
| 705 |
)
|
| 706 |
|
| 707 |
discover_btn = gr.Button("🔍 Discover Models", variant="primary", size="lg")
|
|
|
|
| 711 |
choices=[],
|
| 712 |
value=None,
|
| 713 |
interactive=True,
|
| 714 |
+
info="Click Discover to find the eval server (single URL or ports 8000-8010)",
|
| 715 |
)
|
| 716 |
|
| 717 |
server_status = gr.Markdown("Click 'Discover Models' to find available models")
|