Пример #1
0
def run():
    """
    Entry point to this microservice.
    """
    args = get_cli_parser().parse_args()

    # schedule the internal event consumer
    # that will run until we terminate this service
    asyncio.ensure_future(consume_events(topic=args.topic.encode('utf-8'),
                                         group=args.group,
                                         addr=args.broker,
                                         callback=event_handler))

    # let's start the REST server that will
    # serve the view's resource
    srv = loop.run_until_complete(webserver(args.addr, args.port))
    loop.run_until_complete(route_to_resource(bookshelf_view))

    # finally, let's advertize this service
    # to the rest of the world
    svc = loop.run_until_complete(register_service(
            id=args.id,
            name=args.name,
            port=args.port,
            address=args.addr,
            tags=args.tags
        )
    )
    
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass
    finally:
        loop.run_until_complete(deregister_service(svc))
        loop.run_until_complete(stop_consuming_events())
        
        srv.close()
        loop.run_until_complete(srv.wait_closed())
        # give the time for remaining requests to complete
        loop.run_until_complete(asyncio.sleep(2))
    
    loop.close()
Пример #2
0
def test_parse_kafka_broker_address_is_mandatory():
    parser = utils.get_cli_parser()
    with pytest.raises(SystemExit) as excinfo:
        parser.parse_args(['--topic', 'test'])
Пример #3
0
def test_parse_default_service_listening_address_is_localhost():
    parser = utils.get_cli_parser()
    args = parser.parse_args(['--broker', 'addr', '--topic', 'test'])
    assert args.addr == '127.0.0.1'
Пример #4
0
def test_parse_default_service_listening_port_is_localhost():
    parser = utils.get_cli_parser()
    args = parser.parse_args(['--broker', 'addr', '--topic', 'test'])
    assert args.port == 8080
Пример #5
0
def test_parse_kafka_topic_is_mandatory():
    parser = utils.get_cli_parser()
    with pytest.raises(SystemExit) as excinfo:
        parser.parse_args(['--broker', 'addr'])