Files
pv-controller/src/pv_controller/pvc.py

58 lines
1.2 KiB
Python

from FromDevices import FromDevices
from ToDevices import ToDevices
from ModbusBase import ModbusHandler
from loguru import logger
from config import Config
import logging
import threading
import sys
deathBell = threading.Event()
def exceptHook(args):
global deathBell
logger.error("Exception in thread caught: {}".format(args))
deathBell.set()
logger.error("rang the death bell")
logger.info("pv controller starting")
config = Config.load_from_file()
# configure loguru: only log INFO and above
logger.remove()
logger.add(sys.stdout, level=config.global_.log_level)
modbusHandler = ModbusHandler(config)
toDevicesThread = ToDevices(config, modbusHandler)
toDevicesThread.start()
logger.info("toDevices started")
fromDevicesThread = FromDevices(config, modbusHandler)
fromDevicesThread.start()
logger.info("fromDevices started")
threading.excepthook = exceptHook
logger.info("Threading excepthook set")
logger.info("pv controller is running")
deathBell.wait()
logger.error("pv controller is dying")
toDevicesThread.stop()
fromDevicesThread.stop()
toDevicesThread.join()
logger.error("toDevices joined")
fromDevicesThread.join()
logger.error("fromDevices joined")
logger.error("pv controller is terminated")