Exemplo n.º 1
0
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)
Exemplo n.º 3
0
 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()