Esempio n. 1
0
def run():
    ctx = zmq.asyncio.Context()
    loop = zmq.asyncio.ZMQEventLoop()
    asyncio.set_event_loop(loop)
    socket = ctx.socket(zmq.PULL)

    pool = init_db_pool(loop=loop)
    logger.debug('Connected to database')

    socket.bind(ZMQ_ADDRESS)
    logger.info(f'Listening to {ZMQ_ADDRESS} ...')
    aggregator = Aggregator(zmq_socket=socket, db_pool=pool)

    try:
        loop.run_until_complete(aggregator.run())
    except KeyboardInterrupt:
        logger.info('Shutting down ...')
    finally:
        socket.disconnect()
        loop.run_until_complete(pool.close())
        logger.info('Disconnected from ZMQ socket')