wavespeed
Advanced tools
| """Lightweight health check HTTP server for worker mode.""" | ||
| import threading | ||
| from http.server import BaseHTTPRequestHandler, HTTPServer | ||
| from typing import Optional | ||
| from .logger import log | ||
| class HealthHandler(BaseHTTPRequestHandler): | ||
| """Simple HTTP handler for health checks.""" | ||
| def do_GET(self) -> None: | ||
| """Handle GET requests.""" | ||
| if self.path == "/health": | ||
| self.send_response(200) | ||
| self.send_header("Content-Type", "application/json") | ||
| self.end_headers() | ||
| self.wfile.write(b'{"status": "ok"}') | ||
| else: | ||
| self.send_response(404) | ||
| self.end_headers() | ||
| def log_message(self, format: str, *args) -> None: | ||
| """Suppress default logging.""" | ||
| pass | ||
| class HealthServer: | ||
| """Background health check server.""" | ||
| def __init__(self, host: str = "0.0.0.0", port: int = 8000): | ||
| """Initialize the health server. | ||
| Args: | ||
| host: Host to bind to. | ||
| port: Port to bind to. | ||
| """ | ||
| self.host = host | ||
| self.port = port | ||
| self._server: Optional[HTTPServer] = None | ||
| self._thread: Optional[threading.Thread] = None | ||
| def start(self) -> None: | ||
| """Start the health server in a background thread.""" | ||
| try: | ||
| self._server = HTTPServer((self.host, self.port), HealthHandler) | ||
| self._thread = threading.Thread(target=self._server.serve_forever, daemon=True) | ||
| self._thread.start() | ||
| log.info(f"Health server started at http://{self.host}:{self.port}/health") | ||
| except Exception as e: | ||
| log.error(f"Failed to start health server: {e}") | ||
| def stop(self) -> None: | ||
| """Stop the health server.""" | ||
| if self._server: | ||
| self._server.shutdown() | ||
| self._server = None | ||
| log.debug("Health server stopped") |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: wavespeed | ||
| Version: 1.0.7 | ||
| Version: 1.0.8 | ||
| Summary: WaveSpeedAI Python Client — Official Python SDK for WaveSpeedAI inference platform | ||
@@ -5,0 +5,0 @@ Author-email: WaveSpeedAI <support@wavespeed.ai> |
| Metadata-Version: 2.4 | ||
| Name: wavespeed | ||
| Version: 1.0.7 | ||
| Version: 1.0.8 | ||
| Summary: WaveSpeedAI Python Client — Official Python SDK for WaveSpeedAI inference platform | ||
@@ -5,0 +5,0 @@ Author-email: WaveSpeedAI <support@wavespeed.ai> |
@@ -39,2 +39,3 @@ .gitignore | ||
| src/wavespeed/serverless/modules/handler.py | ||
| src/wavespeed/serverless/modules/health.py | ||
| src/wavespeed/serverless/modules/heartbeat.py | ||
@@ -41,0 +42,0 @@ src/wavespeed/serverless/modules/http.py |
| # This file is automatically generated by setuptools_scm | ||
| __version__ = "1.0.7" | ||
| __version__ = "1.0.8" |
@@ -59,4 +59,4 @@ """WaveSpeedAI Serverless SDK. | ||
| type=str, | ||
| default="localhost", | ||
| help="API server host (default: localhost)", | ||
| default="0.0.0.0", | ||
| help="API server host (default: 0.0.0.0)", | ||
| ) | ||
@@ -164,4 +164,15 @@ parser.add_argument( | ||
| else: | ||
| # Standard worker mode | ||
| # Standard worker mode with health check server | ||
| log.info("Starting serverless worker...") | ||
| run_worker(config) | ||
| from .modules.health import HealthServer | ||
| health_server = HealthServer( | ||
| host=args.waverless_api_host, | ||
| port=args.waverless_api_port, | ||
| ) | ||
| health_server.start() | ||
| try: | ||
| run_worker(config) | ||
| finally: | ||
| health_server.stop() |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
302886
0.74%69
1.47%6104
0.93%