Skip to content
Snippets Groups Projects
__main__.py 1.73 KiB
Newer Older
  • Learn to ignore specific revisions
  • Lluis Gifre Renom's avatar
    Lluis Gifre Renom committed
    import logging, signal, sys, threading
    
    from prometheus_client import start_http_server
    
    Lluis Gifre Renom's avatar
    Lluis Gifre Renom committed
    from common.Settings import get_setting
    
    Lluis Gifre Renom's avatar
    Lluis Gifre Renom committed
    from common.database.Factory import get_database
    
    from device.service.DeviceService import DeviceService
    
    from device.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD, LOG_LEVEL, METRICS_PORT
    
    
    terminate = threading.Event()
    logger = None
    
    def signal_handler(signal, frame):
        global terminate, logger
        logger.warning('Terminate signal received')
        terminate.set()
    
    def main():
        global terminate, logger
    
    
    Lluis Gifre Renom's avatar
    Lluis Gifre Renom committed
        service_port = get_setting('DEVICESERVICE_SERVICE_PORT_GRPC', default=GRPC_SERVICE_PORT)
        max_workers  = get_setting('MAX_WORKERS',                     default=GRPC_MAX_WORKERS )
        grace_period = get_setting('GRACE_PERIOD',                    default=GRPC_GRACE_PERIOD)
        log_level    = get_setting('LOG_LEVEL',                       default=LOG_LEVEL        )
        metrics_port = get_setting('METRICS_PORT',                    default=METRICS_PORT     )
    
    
        logging.basicConfig(level=log_level)
        logger = logging.getLogger(__name__)
    
        signal.signal(signal.SIGINT,  signal_handler)
        signal.signal(signal.SIGTERM, signal_handler)
    
        logger.info('Starting...')
    
        # Start metrics server
        start_http_server(metrics_port)
    
        # Get database instance
        database = get_database()
    
        # Starting device service
    
        grpc_service = DeviceService(database, port=service_port, max_workers=max_workers, grace_period=grace_period)
        grpc_service.start()
    
        while not terminate.wait(timeout=0.1): pass