def __init__(self): """Create Publisher.""" try: user, password = get_user_and_password() except AuthenticationError as e: print(e.message) sys.exit(1) self.publisher = ExperimentalPublisher(user=user, password=password)
def __init__(self, **kwargs): """Create Publisher.""" user, password = get_user_and_password() exchange = kwargs.get('exchange', 'exchange/%s/pulse_actions' % user) try: self.publisher = GenericPublisher( config=PulseConfiguration(user=user, password=password), exchange=exchange ) except AuthenticationError as e: print(e.message) sys.exit(1) except Exception as e: # We continue without posting to pulse print('ERROR: We failed to post a pulse message with what we did') print(e.message)
def run_pulse(exchanges, topics, event_handler, topic_base, dry_run): """ Listen to a pulse exchange in a infinite loop. Call event_handler on every message. """ if len(topic_base) == 1: label = topic_base[0] else: label = str(topic_base) try: user, password = get_user_and_password() except AuthenticationError as e: print(e.message) sys.exit(1) pulse_args = { 'applabel': label, 'topic': topics, 'durable': True, 'user': user, 'password': password } # Pulse consumer's callback passes only data and message arguments # to the function, we need to pass dry-run def handler_with_dry_run(data, message): start_time = default_timer() event_handler(data, message, dry_run) elapsed_time = default_timer() - start_time LOG.info('Message %s, took %s seconds to execute', data, str(elapsed_time)) pulse = PulseConsumer(exchanges, callback=handler_with_dry_run, **pulse_args) LOG.info('Listening on %s, with topic %s', exchanges, topics) while True: try: pulse.listen() except KeyboardInterrupt: sys.exit(1) except: traceback.print_exc()