Esempio n. 1
0
    def enqueue_query(self, id, priority=999):
        id_queue = [_id[1] for _id in self.queue]
        if int(id) in id_queue:
            raise QueryError('This id is already queued')
        self.queue.append((int(priority), int(id)))
        self.save()
        # Try to flush queue to send it now.
        self.flush_queue()

        # Check if the enqueued query has been sent
        for p, i in self.queue:
            if i == int(id):
                return False
        return True
Esempio n. 2
0
    def send_query(self, id):
        if isinstance(id, Contact):
            id = id.id

        queries_queue = None
        try:
            queries_queue = self.get_optimization('QUERIES_QUEUE')
        except OptimizationNotFound:
            pass

        if queries_queue and queries_queue.is_running():
            if queries_queue.enqueue_query(id):
                return Query(id, 'A charm has been sent')
            else:
                return Query(id, 'Unable to send charm: it has been enqueued')
        else:
            if not self.browser.send_charm(id):
                raise QueryError('No enough charms available')
            return Query(id, 'A charm has been sent')
Esempio n. 3
0
    def send_query(self, id):
        if isinstance(id, Contact):
            id = id.id

        queries_queue = None
        try:
            queries_queue = self.get_optimization('QUERIES_QUEUE')
        except OptimizationNotFound:
            pass

        if queries_queue and queries_queue.is_running():
            if queries_queue.enqueue_query(id):
                return Query(id, 'A profile was visited')
            else:
                return Query(id,
                             'Unable to visit profile: it has been enqueued')
        else:
            with self.browser:
                if not self.browser.visit_profile(id):
                    raise QueryError('Could not visit profile')
                return Query(id, 'Profile was visited')