X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=kiosk.py;h=fe9e174262537b5267541d52483a8f3d746152ab;hb=5ea88ab72e175e2d4f57ae8645ca6f825549a7a9;hp=24821600a7a0676b9d6e383885db36fabfe5c861;hpb=5cd909241fefc418e495e633243403592339991a;p=kiosk.git diff --git a/kiosk.py b/kiosk.py index 2482160..fe9e174 100755 --- a/kiosk.py +++ b/kiosk.py @@ -38,11 +38,11 @@ import trigger_catalog cfg = config.add_commandline_args( f"Kiosk Server ({__file__})", "A python server that runs a kiosk." ) -logger = logging.getLogger(__file__) +logger = logging.getLogger(__name__) +@logging_utils.LoggingContext(logger, prefix="janitor:") def thread_janitor() -> None: - logging_utils.register_thread_logging_prefix("janitor:") tracemalloc.start() tracemalloc_target = 0.0 gc_target = 0.0 @@ -101,7 +101,7 @@ def guess_page(command: str, page_chooser: chooser.chooser) -> str: page = page.replace("gohouse", "house list honey do") page = page.replace("gcal", "google calendar events") page = page.replace("mynorthwest", "northwest news") - page = page.replace("myq", "myq garage door status") + page = page.replace("ratago", "ratago garage door status") page = page.replace("gomenu", "dinner menu") page = page.replace("gmaps-seattle-unwrapped", "traffic") page = page.replace("gomenu", "dinner menu") @@ -217,8 +217,8 @@ def process_command( return page +@logging_utils.LoggingContext(logger, prefix="chooser:") def thread_change_current(command_queue: Queue) -> None: - logging_utils.register_thread_logging_prefix("chooser:") page_history = ["", ""] swap_page_target = 0.0 @@ -657,8 +657,8 @@ def renderer_update_internal_stats_page( f.write("") +@logging_utils.LoggingContext(logger, prefix="renderer:") def thread_invoke_renderers() -> None: - logging_utils.register_thread_logging_prefix("renderer:") render_times: Dict[str, np.array] = {} render_counts: collections.Counter = collections.Counter() last_render: Dict[str, datetime] = {} @@ -715,58 +715,66 @@ def main() -> None: janitor_thread: Optional[Thread] = None hotword_thread: Optional[Thread] = None - logging_utils.register_thread_logging_prefix("watchdog:") - while True: - if hotword_thread is None or not hotword_thread.is_alive(): - if hotword_thread is None: - logger.info("watchdog: Starting up the hotword detector thread...") - else: - logger.warning( - "The hotword detector thread seems to have died; restarting it and hoping for the best." + with logging_utils.LoggingContext(logger, prefix="watchdog:"): + while True: + if hotword_thread is None or not hotword_thread.is_alive(): + if hotword_thread is None: + logger.info("Starting up the hotword detector thread...") + else: + logger.warning( + "The hotword detector thread seems to have died; restarting it and hoping for the best." + ) + keyword_paths = [pvporcupine.KEYWORD_PATHS[x] for x in ["bumblebee"]] + + # Sensitivity is the parameter that enables trading + # miss rate for the false alarm rate. It is a floating + # point number within [0, 1]. A higher sensitivity + # reduces the miss rate at the cost of increased false + # alarm rate. + sensitivities = [0.4] * len(keyword_paths) + listener = listen.HotwordListener( + command_queue, + keyword_paths, + sensitivities, ) - keyword_paths = [pvporcupine.KEYWORD_PATHS[x] for x in ["bumblebee"]] - sensitivities = [0.7] * len(keyword_paths) - listener = listen.HotwordListener( - command_queue, - keyword_paths, - sensitivities, - ) - hotword_thread = Thread(target=listener.listen_forever, args=()) - hotword_thread.start() + hotword_thread = Thread(target=listener.listen_forever, args=()) + hotword_thread.start() - if changer_thread is None or not changer_thread.is_alive(): - if changer_thread is None: - logger.info("Starting up the current page changer thread...") - else: - logger.warning( - "The current page changer thread seems to have died; restarting it and hoping for the best." + if changer_thread is None or not changer_thread.is_alive(): + if changer_thread is None: + logger.info("Starting up the current page changer thread...") + else: + logger.warning( + "The current page changer thread seems to have died; restarting it and hoping for the best." + ) + changer_thread = Thread( + target=thread_change_current, args=(command_queue,) ) - changer_thread = Thread(target=thread_change_current, args=(command_queue,)) - changer_thread.start() + changer_thread.start() - if renderer_thread is None or not renderer_thread.is_alive(): - if renderer_thread is None: - logger.info("Starting up the page renderer thread...") - else: - logger.warning( - "The page renderer thread seems to have died; restarting it and hoping for the best." - ) - renderer_thread = Thread(target=thread_invoke_renderers, args=()) - renderer_thread.start() + if renderer_thread is None or not renderer_thread.is_alive(): + if renderer_thread is None: + logger.info("Starting up the page renderer thread...") + else: + logger.warning( + "The page renderer thread seems to have died; restarting it and hoping for the best." + ) + renderer_thread = Thread(target=thread_invoke_renderers, args=()) + renderer_thread.start() - if janitor_thread is None or not janitor_thread.is_alive(): - if janitor_thread is None: - logger.info("Starting up the memory janitor thread...") - else: - logger.warning( - "The memory janitor thread seems to have died; restarting it and hoping for the best." - ) - janitor_thread = Thread(target=thread_janitor, args=()) - janitor_thread.start() + if janitor_thread is None or not janitor_thread.is_alive(): + if janitor_thread is None: + logger.info("Starting up the memory janitor thread...") + else: + logger.warning( + "The memory janitor thread seems to have died; restarting it and hoping for the best." + ) + janitor_thread = Thread(target=thread_janitor, args=()) + janitor_thread.start() - # Have a little break and then check to make sure all threads are still alive. - logger.debug("Having a little nap...") - time.sleep(kiosk_constants.check_threads_period_sec) + # Have a little break and then check to make sure all threads are still alive. + logger.debug("Having a little nap...") + time.sleep(kiosk_constants.check_threads_period_sec) if __name__ == "__main__":