def distributed_send_message(message): if rpc.num_slaves and rpc.sender_slaves: for i, address in enumerate(rpc.sender_slaves): if i >= rpc.num_slaves: logger.error( 'Failed using all configured slaves; resorting to local send_message' ) break if rpc.send_message_to_slave(message, address): return True logger.info('Sending message (ID %s) locally', message.get('message_id', '?')) runtime = send_message(message) add_mode_stat(message['mode'], runtime) metrics_key = 'app_%(application)s_mode_%(mode)s_cnt' % message metrics.add_new_metrics({metrics_key: 0}) metrics.incr(metrics_key) if runtime is not None: return True raise Exception('Failed sending message')
def distributed_send_message(message): # If I am the master, attempt sending my messages through my slaves. if coordinator.am_i_master(): try: if coordinator.slave_count and coordinator.slaves: for i, address in enumerate(coordinator.slaves): if i >= coordinator.slave_count: logger.error('Failed using all configured slaves; resorting to local send_message') break if rpc.send_message_to_slave(message, address): return True except StopIteration: logger.warning('No more slaves. Sending locally.') logger.info('Sending message (ID %s) locally', message.get('message_id', '?')) runtime = send_message(message) add_mode_stat(message['mode'], runtime) metrics_key = 'app_%(application)s_mode_%(mode)s_cnt' % message metrics.add_new_metrics({metrics_key: 0}) metrics.incr(metrics_key) if runtime is not None: return True raise Exception('Failed sending message')
def test_send_through_dummy(): init_vendors([{'type': 'iris_dummy'}], ['dummy_app']) assert send_message({'mode': 'call'}) == 1 assert send_message({'application': 'dummy app', 'mode': 'call'}) == 2