37 lines
1000 B
Python
37 lines
1000 B
Python
import signal
|
|
from logging import Logger
|
|
from influxdb_client_3 import Point
|
|
|
|
class SignalHandler:
|
|
running: bool
|
|
logger: Logger
|
|
|
|
def __init__(self, logger):
|
|
self.running: bool = True
|
|
self.logger: Logger = logger
|
|
signal.signal(signal.SIGINT, self._handle_sigint)
|
|
signal.signal(signal.SIGTERM, self._handle_sigint)
|
|
|
|
def _handle_sigint(self, signum, frame):
|
|
self.logger.info(f"Received SIGNAL: {signal.strsignal(signum)}")
|
|
self.running = False
|
|
|
|
def dict2Point(measurement: str, fields: dict, tags: dict | None = None) -> Point:
|
|
p = Point(measurement)
|
|
for k,v in fields.items():
|
|
p.field(k,v)
|
|
if tags:
|
|
for k,v in tags.items():
|
|
p.tag(k,v)
|
|
return p
|
|
|
|
def convertInt(d: dict) -> dict:
|
|
for k,v in d.items():
|
|
if str.isdecimal(v):
|
|
d[k] = int(v)
|
|
return d
|
|
|
|
def convertIntList(l: list[dict]) -> list[dict]:
|
|
for n,d in enumerate(l):
|
|
l[n] = convertInt(d)
|
|
return l |