コード例 #1
0
 def models(self):
     self.searchers = SearcherModel(self.config)
コード例 #2
0
class Controller(Parent):

    def models(self):
        self.searchers = SearcherModel(self.config)

    def newsearch(self, msg, resp):
        sender = RPCSender(self.config)

        queue = sender.channel.queue_declare()
        queue_name = queue.method.queue

        results = self.searchers.mongoQuery({'QUERY': msg['data']['QUERY']})

        if len(results) > 0:
            searcher = results[0]

            sender.channel.queue_bind(
                exchange=searcher.OUTPUTEXCHANGE,
                queue=queue_name)

            req = sender.send_request(
                'SET',
                'hive',
                {'override': True},
                '',
                '',
                key=searcher.CONTROLQUEUE)
        else:
            searcher = self.searchers.new()
            r = sender.channel.queue_declare()
            q = r.method.queue
            machine = ProcHandler(
                self.config,
                Searcher(
                    self.config,
                    msg['data']['QUERY']),
                q)
            machine.start()

            req = json.loads(sender.send_request(
                'GET',
                'hive',
                {'variables': ['exchange']},
                '',
                '',
                key=q))

            searcher.OUTPUTEXCHANGE = req['exchange']
            searcher.CONTROLQUEUE = q
            searcher.QUERY = msg['data']['QUERY']

            sender.channel.queue_bind(
                exchange=searcher.OUTPUTEXCHANGE,
                queue=queue_name)

            req = sender.send_request(
                'SET',
                'hive',
                {'override': True},
                '',
                '',
                key=q)

            self.searchers.save(searcher)

        resp.respond({'queue': queue_name})

    def stop(self, msg, resp):
        searcher = self.searchers.find(msg.data)
        pub = SimplePublisher(
            ''. self.config['Rabbit']['host'],
            self.config['Rabbit']['username'],
            self.config['Rabbit']['passwords'])
        pub.publish_msg(self, 'STOP', searcher.CONTROLQUEUE)

        resp.respond('DELETED')