From 5784bcee5c4888b4e91f71c35826eb9e40c1ab53 Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 19 Dec 2019 09:01:45 -0500 Subject: [PATCH] buffer influxdb module --- hexlib/misc.py | 2 +- hexlib/monitoring.py | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hexlib/misc.py b/hexlib/misc.py index 5e6125d..dca263f 100644 --- a/hexlib/misc.py +++ b/hexlib/misc.py @@ -33,7 +33,7 @@ def buffered(batch_size: int, flush_on_exit: bool = False): if flush_on_exit: atexit.register(func, buffer) - def wrapper(*items): + def wrapper(items): for item in items: buffer.append(item) diff --git a/hexlib/monitoring.py b/hexlib/monitoring.py index 8db30e0..ac2651a 100644 --- a/hexlib/monitoring.py +++ b/hexlib/monitoring.py @@ -3,15 +3,22 @@ import traceback from influxdb import InfluxDBClient +from hexlib.misc import buffered + class Monitoring: - def __init__(self, db, host="localhost", logger=logging.getLogger("default")): + def __init__(self, db, host="localhost", logger=logging.getLogger("default"), batch_size=1, flush_on_exit=False): self._db = db self._client = InfluxDBClient(host, 8086, "", "", db) self._logger = logger self._init() + @buffered(batch_size, flush_on_exit) + def log(points): + self._log(points) + self.log = log + def db_exists(self, name): for db in self._client.get_list_database(): if db["name"] == name: @@ -22,9 +29,10 @@ class Monitoring: if not self.db_exists(self._db): self._client.create_database(self._db) - def log(self, event): + def _log(self, points): try: - self._client.write_points(event) + self._client.write_points(points) + self._logger.debug("InfluxDB: Wrote %d points" % len(points)) except Exception as e: self._logger.debug(traceback.format_exc()) self._logger.error(str(e))