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
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')
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')