def get_tasks_status(robot_id): tasks_status = collections.OrderedDict() with switch_collection(Task, Task.Meta.archive_collection): tasks = Task.get_tasks_by_robot(robot_id) with switch_collection(TaskStatus, TaskStatus.Meta.archive_collection): for task in tasks: task_status = TaskStatus.objects.get({"_id": task.task_id}) if task_status.status == TaskStatusConst.COMPLETED: tasks_status[task.task_id] = task_status return tasks_status
def run(self): try: self.api.start() while True: try: tasks = Task.get_tasks_by_robot(self.robot_id) if self.schedule_execution_monitor.task is None: self.schedule_execution_monitor.process_tasks(tasks) self.executor.run() except DoesNotExist: pass self.api.run() except (KeyboardInterrupt, SystemExit): self.logger.info("Terminating %s robot ...", self.robot_id) self.api.shutdown() self.executor.shutdown() self.logger.info("Exiting...")