Mercurial > code > home > repos > pi_mqtt
diff pi_mqtt.py @ 3:0cc41259fddd
healthcheck
author | drewp@bigasterisk.com |
---|---|
date | Sun, 10 Dec 2023 17:26:52 -0800 |
parents | 3989f073ed9e |
children | 759f0ba7d345 |
line wrap: on
line diff
--- a/pi_mqtt.py Fri Sep 01 23:58:24 2023 -0700 +++ b/pi_mqtt.py Sun Dec 10 17:26:52 2023 -0800 @@ -7,7 +7,7 @@ from prometheus_client import Gauge from starlette.applications import Starlette from starlette.requests import Request -from starlette.responses import JSONResponse +from starlette.responses import PlainTextResponse from starlette.routing import Route from starlette_exporter import PrometheusMiddleware, handle_metrics @@ -16,9 +16,12 @@ logging.basicConfig(level=logging.INFO) log = logging.getLogger() +lastSuccessfulPoll = time.time() -def hello(request: Request) -> JSONResponse: - return JSONResponse({"demo": "hello"}) +def health(request: Request) -> PlainTextResponse: + if time.time() - lastSuccessfulPoll > 10: + return PlainTextResponse('err', status_code=500) + return PlainTextResponse('ok', status_code=200) @dataclass @@ -27,6 +30,7 @@ last_motion = 0 def poll(self, first_run=False): + global lastSuccessfulPoll now = time.time() mo = self.garage.read(4) SENSOR_MOTION.labels(loc='ga').set(mo) @@ -36,6 +40,7 @@ light_on = self.last_motion > now - 20 * 60 OUTPUT_LIGHT.labels(loc='ga').set(light_on) self.garage.write(15, not light_on) + lastSuccessfulPoll = time.time() def main(): @@ -47,7 +52,7 @@ background_loop.loop_forever(poller.poll, 1) app = Starlette(debug=True, routes=[ - Route('/api/hello', hello), + Route('/health', health), ]) app.add_middleware(PrometheusMiddleware, app_name='pi_mqtt')