import json import os import signal from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer HOST = "0.0.0.0" PORT = 8080 shutdown_requested = False def _config() -> dict: token = os.getenv("EXTERNAL_SERVICE_TOKEN", "") return { "external_service_token_present": bool(token), } class Handler(BaseHTTPRequestHandler): def do_GET(self) -> None: if self.path == "/health": self._send_json({"status": "ok"}) return if self.path == "/": self._send_json( { "name": "strategy-demo", "status": "running", "config": _config(), } ) return self._send_json({"error": "not found"}, status=404) def log_message(self, fmt: str, *args: object) -> None: print(f"{self.address_string()} - {fmt % args}", flush=True) def _send_json(self, body: dict, status: int = 200) -> None: payload = json.dumps(body).encode() self.send_response(status) self.send_header("Content-Type", "application/json") self.send_header("Content-Length", str(len(payload))) self.end_headers() self.wfile.write(payload) def _handle_signal(signum: int, _frame: object) -> None: global shutdown_requested shutdown_requested = True print(f"received signal {signum}, shutting down", flush=True) def main() -> None: signal.signal(signal.SIGTERM, _handle_signal) signal.signal(signal.SIGINT, _handle_signal) server = ThreadingHTTPServer((HOST, PORT), Handler) server.timeout = 1 print(f"strategy-demo listening on {HOST}:{PORT}", flush=True) while not shutdown_requested: server.handle_request() server.server_close() if __name__ == "__main__": main()