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, )
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, )