Mercurial > code > home > repos > light-bridge
diff light_bridge.py @ 27:32cfefe3155b
try harder to crash if there's an mqtt error, so k8s does a full restart
author | drewp@bigasterisk.com |
---|---|
date | Sat, 23 Mar 2024 15:25:02 -0700 |
parents | cee43f550577 |
children |
line wrap: on
line diff
--- a/light_bridge.py Sat Feb 03 20:56:27 2024 -0800 +++ b/light_bridge.py Sat Mar 23 15:25:02 2024 -0700 @@ -4,10 +4,11 @@ import asyncio import json import logging +import os import time from functools import partial -from color import Color +import uvicorn from patchablegraph import PatchableGraph from patchablegraph.handler import GraphEvents, StaticGraph from sse_starlette.sse import EventSourceResponse @@ -17,8 +18,10 @@ from starlette.routing import Route from starlette_exporter import PrometheusMiddleware, handle_metrics +from color import Color from light import Lights from mqtt_io import MqttIo + logging.basicConfig(level=logging.INFO) log = logging.getLogger() @@ -29,6 +32,7 @@ await light.setColor(Color.fromHex(body)) return JSONResponse(light.to_dict()) + async def lightNames(lights: Lights, request: Request) -> JSONResponse: return JSONResponse({'lightNames': lights.allNames()}) @@ -48,6 +52,11 @@ return EventSourceResponse(g()) +def crash(request: Request): + log.info('crash requested') + os.abort() + + def main(): mqtt = MqttIo() lights = Lights(mqtt) @@ -59,6 +68,7 @@ Route('/api/table', partial(table, lights)), Route('/api/graph', StaticGraph(graph)), Route('/api/graph/events', GraphEvents(graph)), + Route('/api/crash', crash), ]) app.add_middleware(PrometheusMiddleware, app_name='light-bridge') @@ -67,4 +77,4 @@ return app -app = main() +uvicorn.run(main, host="0.0.0.0", port=8001, log_level=logging.INFO, factory=True)