예제 #1
0
 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)
예제 #2
0
    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)
예제 #3
0
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()