def main(): parser = gather_parsers(get_argument_parser(), (res.scheduling,)) args = parser.parse_args() Logger.setup_logging() initialize_configuration() logger = logging.getLogger("main") loop = asyncio.get_event_loop() session_id = str(uuid.uuid4()) try: yield from Logger.duplicate_logs_to_mongo(session_id, "main") except: logger.exception("Failed to setup logging to MongoDB") install_watchdog(r.watchdog.interval) db_manager = DBManager(**r.db) yield from db_manager.initialize() heap = Heap() heap.initialize((yield from db_manager.fetch_all())) worker = Worker(db_manager, heap, r.amqp, r.scheduler.poll_interval, r.scheduler.timeout, (yield from db_manager.fetch_pending())) yield from worker.initialize() yield from worker.work() for signame in "SIGINT", "SIGTERM": @asyncio.coroutine def terminate(): if not args.disable_logging_to_mongo: yield from Logger.discard_logs_to_mongo() yield from worker.stop() yield from db_manager.shutdown() loop.stop() def sighandler(): logger.critical("Received %s", signame) loop.create_task(terminate()) loop.add_signal_handler(getattr(signal, signame), sighandler) logger.debug("Installed signal handlers")
def setUpClass(): Logger.setup_logging(logging.DEBUG)