From 13044021b39aa532bdfbad1e1867eb8517bbc382 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 3 Jun 2020 11:24:18 +0200 Subject: [PATCH] setup logging --- inventory_provider/tasks/monitor.py | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/inventory_provider/tasks/monitor.py b/inventory_provider/tasks/monitor.py index 7804413d..5481c9b6 100644 --- a/inventory_provider/tasks/monitor.py +++ b/inventory_provider/tasks/monitor.py @@ -1,15 +1,32 @@ +""" +standalone process that monitors celery task events and +writes them to redis for reporting + +as with the other processes, INVENTORY_PROVIDER_CONFIG_FILENAME +must be defined in the environment +""" import json import logging +import os +from inventory_provider import config, environment from inventory_provider.tasks.worker import app from inventory_provider.tasks.common import get_current_redis -from threading import Thread - logger = logging.getLogger(__name__) INFO_EVENT_TYPES = ('task-info', 'task-warning', 'task-error') -def _monitor_proc(config): +def run(): + """ + save 'task-*' events to redis, never returns + """ + environment.setup_logging() + + with open(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) as f: + logging.info( + 'loading config from: %r' + % os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) + config_params = config.load(f) state = app.events.State() @@ -23,26 +40,20 @@ def _monitor_proc(config): if event['type'] in INFO_EVENT_TYPES: key += f':{event["clock"]}' - r = get_current_redis(config) + r = get_current_redis(config_params) r.set(key, json.dumps(event)) logger.debug(f'{key}: {json.dumps(event)}') with app.connection() as connection: recv = app.events.Receiver(connection, handlers={ - '*': _log_event, + '*': _log_event }) recv.capture(limit=None, timeout=None, wakeup=True) -def start_monitoring(): - thread = Thread(target=_monitor_proc, args=()) - thread.start() - - def clear_joblog(r): """ - :param r: :return: """ @@ -53,17 +64,5 @@ def clear_joblog(r): if __name__ == '__main__': - import os - from inventory_provider import config - logging.basicConfig(level=logging.DEBUG) - - filename = os.path.join( - os.path.dirname(__file__), - '..', - 'config-sentinel.json') - - with open(filename) as f: - params = config.load(f) - - _monitor_proc(params) + run() -- GitLab