def doTask(): master_host = request.args.get('from') taskid = request.args.get('taskid', -1) sleep_time = request.args.get('sleep_time', 0) if master_host: worker.do_task(Task(taskid, sleep_time), master_host) return 'OK' ,200 return 'Rejected, parameters error', 203
def get(self): entry = self.tasks.find_one( {"$or": [{ 'status': Status.CREATED }, { 'status': Status.FAILURE }]}, sort=[('taskid', 1)]) return Task(entry['taskid'], entry['sleep_time']) if entry else None
def notify(self, master_host=None): filter = (lambda task: (not master_host or task['master_host'] == master_host) and task['status'] != Status.RUNNING) for task in self.msg_queue.find(filter): params = Task(task['taskid'], task['sleep_time']).__dict__.copy() params.update({'status': task['status'], 'worker': task['uid']}) status, _ = Conn(task['master_host']).send_recv('/notify', params) if status == 200: # a message is removed only if it is sent successfully # otherwise wait for master to ping and gather this message later self.msg_queue.delete(task['_id'])
def read_csv(file_name): with open(file_name) as csv_file: reader = csv.reader(csv_file, delimiter=',') weights = [] sizes = [] costs = [] line_count = 0 for row in reader: if line_count == 0: n_items = int(row[0]) max_weight = int(row[1]) max_size = int(row[2]) logging.info("No of items " + str(n_items) + " max weight: " + str(max_weight) + " max size: " + str(max_size)) line_count += 1 else: weights.append(int(row[0])) sizes.append(int(row[1])) costs.append(int(row[2])) logging.info("Task imported from the csv file") return Task(n_items, max_weight, max_size, weights, sizes, costs)
def get_task_(self): status, data = Conn(self.taskpool_host).send_recv('/get') if status != 200 or not data: return None qs = parse_qs(data) return Task(qs['taskid'][0], qs['sleep_time'][0])
def random_init(self, num=100): # insert tasks with random sleep time for i in range(0, num): self.put(Task(i, randint(1, 5)))