示例#1
0
    def extract_user_func_args(
            self, tasks: Iterable[InferenceTask[str]]) -> ApiFuncArgs:
        fmts, datas = tuple(
            zip(*((self._detect_format(task), task.data) for task in tasks)))

        df, batchs = read_dataframes_from_json_n_csv(
            datas,
            fmts,
            orient=self.orient,
            columns=self.columns,
            dtype=self.dtype,
        )

        if df is None:
            for task in tasks:
                task.discard(
                    http_status=400,
                    err_msg=f"{self.__class__.__name__} Wrong input format.",
                )
            return (df, )

        for task, batch, data in zip(tasks, batchs, datas):
            if batch == 0:
                task.discard(
                    http_status=400,
                    err_msg=
                    f"{self.__class__.__name__} Wrong input format: {data}.",
                )
            else:
                task.batch = batch
        return (df, )
示例#2
0
    def handle_batch_request(
        self, requests: Iterable[SimpleRequest], func
    ) -> Iterable[SimpleResponse]:

        datas = [r.data for r in requests]
        content_types = [
            r.parsed_headers.get('content-type', 'application/json') for r in requests
        ]

        df_conc, slices_generator = read_dataframes_from_json_n_csv(
            datas, content_types, self.orient
        )
        slices = list(slices_generator)

        result_conc = func(df_conc)

        return self.output_adapter.to_batch_response(
            result_conc, slices=slices, requests=requests,
        )