Coverage for src/unit_cooler/webui/worker.py: 80%
28 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-28 08:08 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-28 08:08 +0000
1#!/usr/bin/env python3
2import logging
3import threading
4import traceback
6import my_lib.footprint
8import unit_cooler.const
9import unit_cooler.pubsub.subscribe
11# グローバル終了フラグ
12should_terminate = threading.Event()
15def term():
16 """終了フラグを設定する関数"""
17 should_terminate.set()
18 logging.info("Termination flag set for webui worker")
21def queue_put(message_queue, message, liveness_file):
22 message["state"] = unit_cooler.const.COOLING_STATE(message["state"])
24 if message_queue.full():
25 message_queue.get()
27 logging.info("Receive message: %s", message)
29 message_queue.put(message)
30 my_lib.footprint.update(liveness_file)
33# NOTE: 制御メッセージを Subscribe して、キューに積み、cooler_stat.py で WebUI に渡すワーカ
34def subscribe_worker(config, control_host, pub_port, message_queue, liveness_file, msg_count=0): # noqa: PLR0913
35 logging.info("Start webui subscribe worker (%s:%d)", control_host, pub_port)
37 ret = 0
38 try:
39 # 終了フラグを渡してstart_clientを呼び出し
40 unit_cooler.pubsub.subscribe.start_client(
41 control_host,
42 pub_port,
43 lambda message: queue_put(message_queue, message, liveness_file),
44 msg_count,
45 should_terminate,
46 )
47 except Exception:
48 logging.exception("Failed to receive control message")
49 unit_cooler.util.notify_error(config, traceback.format_exc())
50 ret = -1
52 logging.warning("Stop subscribe worker")
54 return ret