예제 #1
0
class PdfExtractor(Callable):

    def __init__(self, channel, opts):
        self.channel = channel
        self.opts = opts
        self.consumer = QueueingConsumer(channel)
    
    def call(self):
        log = logging.getLogger()
        self.channel.basicConsume(opts.queue_name, False, self.consumer)
        log.info("Awaiting pdf extraction tasks on %s...", opts.queue_name)
        while True:
            delivery = self.consumer.nextDelivery()
            props = delivery.getProperties()
            task = String(delivery.getBody())
            reply_props = BasicProperties.Builder().build()
            try:
                task_data = json.loads(str(task))
                log.debug("got task: %s", str(task_data))
                resp = self.extract(task_data['bibcode'], task_data['ft_source'])
            except Exception, e:
                msg = traceback.format_exc()
                log.debug("returning error response: %s" % str(msg))
                resp = { '_exception': str(msg) }
            finally:
예제 #2
0
class PdfExtractor(Callable):
    def __init__(self, channel, opts):
        self.channel = channel
        self.opts = opts
        self.consumer = QueueingConsumer(channel)

    def call(self):
        log = logging.getLogger()
        self.channel.basicConsume(opts.queue_name, False, self.consumer)
        log.info("Awaiting pdf extraction tasks on %s...", opts.queue_name)
        while True:
            delivery = self.consumer.nextDelivery()
            props = delivery.getProperties()
            task = String(delivery.getBody())
            reply_props = BasicProperties.Builder().build()
            try:
                task_data = json.loads(str(task))
                log.debug("got task: %s", str(task_data))
                resp = self.extract(task_data['bibcode'],
                                    task_data['ft_source'])
            except Exception, e:
                msg = traceback.format_exc()
                log.debug("returning error response: %s" % str(msg))
                resp = {'_exception': str(msg)}
            finally:
예제 #3
0
class RabbitMQClient:

    def __init__(self):
        """
        Connections and other settings here should match those set in publisher script
        """
        self.stdout = Logger()
        self.exchangeName = "bungeni_serialization_output_queue"
        self.queueName = "bungeni_serialization_output_queue"
        self.factory = ConnectionFactory()
        self.factory.setHost("localhost")
        self.conn = self.factory.newConnection()
        self.channel = self.conn.createChannel()
        self.channel.exchangeDeclare(self.exchangeName,"direct",False)

    def consume_msgs(self, parliament_cache_info):
        try:
            declareOk = self.channel.queueDeclare(self.queueName, True, False, False, None)
            self.channel.queueBind(self.queueName, self.exchangeName, self.queueName)
            self.consumer = QueueingConsumer(self.channel)
            self.channel.basicConsume(self.queueName, False, self.consumer)
            count = 0
            if declareOk.messageCount <= 0:
                self.stdout.write(time.asctime(time.localtime(time.time())) + " NO MESSAGES \n")
            else:
                self.stdout.write(time.asctime(time.localtime(time.time())) + " " + str(declareOk.messageCount) + " MESSAGES! \n")
                while (count < declareOk.messageCount):
                    delivery = QueueingConsumer.Delivery
                    delivery = self.consumer.nextDelivery()
                    message = str(String(delivery.getBody()))
                    obj_data = json.loads(message)
                    file_status = main_queue(__config_file__, str(obj_data['location']), parliament_cache_info)
                    count = count + 1
                    if file_status is None:
                        print "No Parliament Information could be gathered"
                        sys.exit(0)
                    elif file_status is True:
                        # Acknowledgements to RabbitMQ the successfully, processed files
                        self.channel.basicAck(delivery.getEnvelope().getDeliveryTag(), False)
                    else:
                        # Reject file, requeue for investigation or future attempts
                        self.channel.basicReject(delivery.getEnvelope().getDeliveryTag(), True)
        finally:
            try:
                if self.channel is not None:
                    self.channel.close()
            except Exception, ex:
                    LOG.error("Error while closing channel", ex)
            try:
                if self.conn is not None:
                    self.conn.close()
            except Exception, ex:
                    LOG.error("Error while closing connection", ex)
예제 #4
0
파일: recv.py 프로젝트: esnet/netshell
try:
    consumer = QueueingConsumer(channel)
    # Declare as exclusive consumer of queue
    channel.basicConsume(queueName, True, "consumer", False, True, None, consumer)
    print " [*] Waiting for messages."
except IOError:
    print "Unable to connect to queue."
    connection.close()
    sys.exit(1)

writer = WriteMsgToFile(HOME_FILE)

while True:
    try:
        delivery = consumer.nextDelivery()
        message = delivery.getBody()
        message = StringUtil.fromBytes(message)
        token = message.split(":",1)[0]
        rest = message.split(":",1)[1]
        message = str(message)

        # If message is a "token_request", process request and add new token to hashmap
        if message[0:13] == ("TOKEN_REQUEST"):
            makeToken = ProcessTokenRequest(message, channel)
            tokenID = makeToken.sendToken()
            permissions.put(tokenID[0], tokenID[1])

        # Otherwise, check if message has valid token (token in hashmap). 
        # If so, accept message, then delete token from valid list.
        else:
예제 #5
0
파일: recv.py 프로젝트: esnet/netshell
try:
    consumer = QueueingConsumer(channel)
    # Declare as exclusive consumer of queue
    channel.basicConsume(queueName, True, "consumer", False, True, None,
                         consumer)
    print " [*] Waiting for messages."
except IOError:
    print "Unable to connect to queue."
    connection.close()
    sys.exit(1)

writer = WriteMsgToFile(HOME_FILE)

while True:
    try:
        delivery = consumer.nextDelivery()
        message = delivery.getBody()
        message = StringUtil.fromBytes(message)
        token = message.split(":", 1)[0]
        rest = message.split(":", 1)[1]
        message = str(message)

        # If message is a "token_request", process request and add new token to hashmap
        if message[0:13] == ("TOKEN_REQUEST"):
            makeToken = ProcessTokenRequest(message, channel)
            tokenID = makeToken.sendToken()
            permissions.put(tokenID[0], tokenID[1])

        # Otherwise, check if message has valid token (token in hashmap).
        # If so, accept message, then delete token from valid list.
        else: