buffer influxdb module

This commit is contained in:
simon 2019-12-19 09:01:45 -05:00
parent 3adca8cb5e
commit 5784bcee5c
2 changed files with 12 additions and 4 deletions

View File

@ -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)

View File

@ -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))