示例#1
0
    def execute(self, task, args=None):
        status = TaskStatus()
        status.id = 'LOCAL-' + task.id
        status.args = args if args is not None else task.args
        try:
            result = task.execute(args)
            status.code = TaskStatus.CODE_EXECUTION_SUCCESS
            status.message = "OK"
            status.result = result
        except Exception as e:
            status.code = TaskStatus.CODE_EXECUTION_FAILED
            status.message = str(e)

        return status
示例#2
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
示例#3
0
def handle(conn):
    # receiving task object
    request = conn.recv(1024)
    try:
        task = pickle.loads(request)
        status_code, status_message, task_id = TaskStatus.CODE_REQUEST_SUCCESS, 'OK', task.id
    except Exception as e:
        status_code, status_message, task_id = TaskStatus.CODE_REQUEST_FAILED, str(
            e), None

    # send status
    status = TaskStatus(status_code, status_message)
    status.id = task_id
    status.args = task.args
    try:
        conn.sendall(status.serialize())
    except Exception as e:
        status_code, status_message, task_id = TaskStatus.CODE_REQUEST_FAILED, str(
            e), None

    # execute task
    if status_code == TaskStatus.CODE_REQUEST_SUCCESS:
        try:
            result_data = task.execute()
            status.code = TaskStatus.CODE_EXECUTION_SUCCESS
            status.result = result_data
            conn.sendall(status.serialize())
            print(task_id, 'success')
        except Exception as e:
            try:
                status.code = TaskStatus.CODE_EXECUTION_FAILED
                status.message = str(e)
                conn.sendall(status.serialize())
            except:
                pass

    conn.close()