Mercurial > code > home > repos > pi_mqtt
comparison pi_mqtt.py @ 4:759f0ba7d345
crash (and get restarted) better
author | drewp@bigasterisk.com |
---|---|
date | Sat, 23 Mar 2024 16:15:34 -0700 |
parents | 0cc41259fddd |
children | 492eef562a88 |
comparison
equal
deleted
inserted
replaced
3:0cc41259fddd | 4:759f0ba7d345 |
---|---|
2 import time | 2 import time |
3 from dataclasses import dataclass | 3 from dataclasses import dataclass |
4 | 4 |
5 import background_loop | 5 import background_loop |
6 import pigpio | 6 import pigpio |
7 import uvicorn | |
7 from prometheus_client import Gauge | 8 from prometheus_client import Gauge |
8 from starlette.applications import Starlette | 9 from starlette.applications import Starlette |
9 from starlette.requests import Request | 10 from starlette.requests import Request |
10 from starlette.responses import PlainTextResponse | 11 from starlette.responses import PlainTextResponse |
11 from starlette.routing import Route | 12 from starlette.routing import Route |
15 OUTPUT_LIGHT = Gauge('output_light', 'light level', ['loc']) | 16 OUTPUT_LIGHT = Gauge('output_light', 'light level', ['loc']) |
16 logging.basicConfig(level=logging.INFO) | 17 logging.basicConfig(level=logging.INFO) |
17 log = logging.getLogger() | 18 log = logging.getLogger() |
18 | 19 |
19 lastSuccessfulPoll = time.time() | 20 lastSuccessfulPoll = time.time() |
21 | |
20 | 22 |
21 def health(request: Request) -> PlainTextResponse: | 23 def health(request: Request) -> PlainTextResponse: |
22 if time.time() - lastSuccessfulPoll > 10: | 24 if time.time() - lastSuccessfulPoll > 10: |
23 return PlainTextResponse('err', status_code=500) | 25 return PlainTextResponse('err', status_code=500) |
24 return PlainTextResponse('ok', status_code=200) | 26 return PlainTextResponse('ok', status_code=200) |
58 app.add_middleware(PrometheusMiddleware, app_name='pi_mqtt') | 60 app.add_middleware(PrometheusMiddleware, app_name='pi_mqtt') |
59 app.add_route("/metrics", handle_metrics) | 61 app.add_route("/metrics", handle_metrics) |
60 return app | 62 return app |
61 | 63 |
62 | 64 |
63 app = main() | 65 uvicorn.run(main, host="0.0.0.0", port=8001, log_level=logging.INFO, factory=True) |