Exemple #1
0
    def execute(self, task, args=None):
        # set arguments
        if args is not None:
            task.args = args

        # initialize status
        status = TaskStatus()
        status.host = self.host

        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            # sending task request
            try:
                s.connect((self.host, self.port))
                s.settimeout(1)
                status.id = task.id
                s.sendall(task.serialize())
                data = s.recv(1024)
                s.settimeout(self.timeout)
            except Exception as e:
                status.code = TaskStatus.CODE_REQUEST_TIME_OUT
                status.message = str(e)
                return status

            temp = None
            try:
                status = pickle.loads(data)
                status.host = self.host
                status.id = task.id
                if status.code == TaskStatus.CODE_REQUEST_SUCCESS:
                    data = s.recv(2048)
                    temp = data
                    status = pickle.loads(data)
                    status.host = self.host
                    status.id = task.id
            except Exception as e:
                status.code = TaskStatus.CODE_SERVER_ERROR
                status.message = str(e)

            try:
                s.close()
            except Exception as e:
                print(str(e))

            return status