Exemplo n.º 1
0
 def start_subscriber():
     def on_response_received(msg):
         body = json.loads(msg.body.decode('utf-8'))
         response_msg.update(body)
         msg.ack()
     subscriber = bashtasks_mod.init_subscriber(host=rabbit_host,
                                                port=rabbit_port,
                                                usr=rabbit_user, pas=rabbit_pass)
     subscriber.subscribe(on_response_received)
Exemplo n.º 2
0
def start_responses_recvr(host='127.0.0.1', port=5672, usr='******', pas='******', stats=None,
                          msgs_dir=None, trace_err_only=False, verbose=False):
    logger = get_logger(name=curr_module_name())

    def count_message_processed():
        global pending_tasks
        pending_tasks = -1 if pending_tasks == -1 else pending_tasks - 1

        if pending_tasks == 0:
            logger.info("Processed all messages... exiting.")
            stats.sumaryPrettyPrint()
            stats.closeCsvFile()
            sys.exit()
        else:  # pending_tasks < 0 -> infinite. > 0 is the nr msgs pending
            logger.debug('-- still msgs_pending: %d', get_pending_nr())

    def handle_response(response_msg):
        msg = json.loads(response_msg.body.decode('utf-8'))
        logger.debug(">>>> response received: %s from queue %s correlation_id: %d \
                      pending_msgs: %d is_error: %s",
                     threading.current_thread().name, TASK_RESPONSES_POOL,
                     msg['correlation_id'], get_pending_nr(), str(is_error(msg)))
        if verbose:
            logger.info('---------------------------------------- MSG:')
            for key, value in msg.items():
                logger.info('\t%s:-> %s', key, str(value))
            logger.info('---------------------------------------------')

        stats.trackMsg(msg)

        if msgs_dir and (not trace_err_only or is_error(msg)):
            trace_msg(msgs_dir, msg)

        response_msg.ack()

        count_message_processed()

    curr_th_name = threading.current_thread().name

    logger.info(">> Starting receiver %s connecting to rabbitmq: %s:%s@%s",
                curr_th_name, usr, pas, host)

    subscriber = init_subscriber(host=host, port=port, usr=usr, pas=pas)
    subscriber.subscribe(handle_response)