Ejemplo n.º 1
0
 def _listen(self, task, retry_wait=30):
     self._pubsub = None
     keepTrying = True
     sleep = 0
     while keepTrying and not self._shutdown:
         try:
             if sleep:
                 log.info("Waiting %s seconds to reconnect..." % sleep)
                 time.sleep(sleep)
                 sleep = min(retry_wait, sleep * 2)
             else:
                 sleep = .1
             log.info("Connecting to RabbitMQ...")
             self._pubsub = getProtobufPubSub(self._amqpConnectionInfo,
                                              self._queueSchema,
                                              QUEUE_RAW_ZEN_EVENTS)
             self._pubsub.registerHandler('$Event', task)
             self._pubsub.registerExchange('$ZepZenEvents')
             self._pubsub.messagesPerWorker = self.options.messagesPerWorker
             #reset sleep time
             sleep = 0
             self._pubsub.run()
         except (socket.error, AMQPConnectionException) as e:
             log.warn("RabbitMQ Connection error %s" % e)
         except KeyboardInterrupt:
             keepTrying = False
         finally:
             if self._pubsub:
                 self._pubsub.shutdown()
                 self._pubsub = None
Ejemplo n.º 2
0
 def _listen(self, task, retry_wait=30):
     self._pubsub = None
     keepTrying = True
     sleep = 0
     while keepTrying and not self._shutdown:
         try:
             if sleep:
                 log.info("Waiting %s seconds to reconnect..." % sleep)
                 time.sleep(sleep)
                 sleep = min(retry_wait, sleep * 2)
             else:
                 sleep = .1
             log.info("Connecting to RabbitMQ...")
             self._pubsub = getProtobufPubSub(self._amqpConnectionInfo, self._queueSchema, QUEUE_RAW_ZEN_EVENTS)
             self._pubsub.registerHandler('$Event', task)
             self._pubsub.registerExchange('$ZepZenEvents')
             self._pubsub.messagesPerWorker = self.options.messagesPerWorker
             #reset sleep time
             sleep=0
             self._pubsub.run()
         except (socket.error, AMQPConnectionException) as e:
             log.warn("RabbitMQ Connection error %s" % e)
         except KeyboardInterrupt:
             keepTrying = False
         finally:
             if self._pubsub:
                 self._pubsub.shutdown()
                 self._pubsub = None
Ejemplo n.º 3
0
def main():
    from optparse import OptionParser
    import sys
    parser = OptionParser(usage=usage())

    parser.add_option('-F',
                      '--format',
                      type='string',
                      dest='format',
                      default='protostream',
                      help='Format to dump the messages in (%s)' %
                      ', '.join(_FORMATTERS.keys()))

    parser.add_option(
        '-c',
        '--compression',
        type='string',
        dest='compression',
        default='none',
        help='Message compression algorithm (possible values: deflate, none)')

    parser = AMQPConfig.addOptionsToParser(parser)
    parser = addLoggingOptions(parser)

    options, args = parser.parse_args()

    schemas = [SCHEMA]
    schemas.extend(get_zenpack_schemas())

    try:
        formatter = _FORMATTERS[options.format.lower()]
    except KeyError:
        parser.error('Invalid format "%s"' % options.format)

    initLogging(options)

    amqpConnectionInfo = AMQPConfig()
    amqpConnectionInfo.update(options)
    schema = Schema(*schemas)
    schema.loadProperties(
        {'exchange.default.compression': options.compression.lower()})
    publisher = getProtobufPubSub(amqpConnectionInfo, schema, None)

    loader = Loader(sys.stdin, formatter, schema, publisher)

    try:
        loader.load()
    except KeyboardInterrupt:
        pass

    loader.publisher.shutdown()
Ejemplo n.º 4
0
def main():
    from optparse import OptionParser
    import sys
    parser = OptionParser(usage=usage())

    parser.add_option('-F', '--format', type='string', dest='format', default='protostream',
                       help='Format to dump the messages in (%s)' % ', '.join(_FORMATTERS.keys()))

    parser.add_option('-c', '--compression', type='string', dest='compression', default='none',
                     help='Message compression algorithm (possible values: deflate, none)')

    parser = AMQPConfig.addOptionsToParser(parser)
    parser = addLoggingOptions(parser)

    options, args = parser.parse_args()

    schemas = [SCHEMA]
    schemas.extend(get_zenpack_schemas())

    try:
        formatter = _FORMATTERS[options.format.lower()]
    except KeyError:
        parser.error('Invalid format "%s"' % options.format)

    initLogging(options)

    amqpConnectionInfo = AMQPConfig()
    amqpConnectionInfo.update(options)
    schema = Schema(*schemas)
    schema.loadProperties({'exchange.default.compression': options.compression.lower()})
    publisher = getProtobufPubSub(amqpConnectionInfo, schema, None)


    loader = Loader(sys.stdin, formatter, schema, publisher)

    try:
        loader.load()
    except KeyboardInterrupt:
        pass

    loader.publisher.shutdown()