Пример #1
0
 def wrapped_func(*args, **kwargs):
     with trace(
             service_name=self.__class__.__name__,
             span_name="user defined inference api callback function",
     ):
         if append_arg and append_arg in kwargs:
             tasks = kwargs.pop(append_arg)
         elif append_arg in kwargs:
             tasks = kwargs[append_arg]
         else:
             tasks = []
         try:
             return self._user_func(*args, **kwargs)
         except Exception as e:  # pylint: disable=broad-except
             if self.batch:
                 for task in tasks:
                     if not task.is_discarded:
                         task.discard(
                             http_status=500,
                             err_msg=
                             f"Exception happened in API function: {e}",
                         )
                 return [None] * sum(1 if t.batch is None else t.batch
                                     for t in tasks)
             else:
                 task = tasks
                 if not task.is_discarded:
                     task.discard(
                         http_status=500,
                         err_msg=
                         f"Exception happened in API function: {e}",
                     )
                 return [None
                         ] * (1 if task.batch is None else task.batch)
Пример #2
0
 def handle_batch_request(self, requests: Sequence[HTTPRequest]):
     with trace(
             service_name=self.__class__.__name__,
             span_name=f"call `{self.input_adapter.__class__.__name__}`",
     ):
         inf_tasks = map(self.input_adapter.from_http_request, requests)
         results = self.infer(inf_tasks)
         return map(self.output_adapter.to_http_response, results)
Пример #3
0
 def handle_batch_request(self, requests: Sequence[HTTPRequest]):
     with trace(
         service_name=self.__class__.__name__,
         span_name=f"call `{self.input_adapter.__class__.__name__}`",
     ):
         inf_tasks = map(self.input_adapter.from_http_request, requests)
         results = self.infer(inf_tasks)
         responses = tuple(map(self.output_adapter.to_http_response, results))
         for inf_task, response in zip(inf_tasks, responses):
             response.headers['X-Request-Id'] = inf_task.task_id
         return responses
Пример #4
0
    def handle_batch_request(self, request: flask.Request):
        from bentoml.marshal.utils import DataLoader

        requests = DataLoader.split_requests(request.get_data())

        with trace(
                service_name=self.__class__.__name__,
                span_name=f"call `{self.handler.__class__.__name__}`",
        ):
            responses = self.handler.handle_batch_request(requests, self.func)

        return DataLoader.merge_responses(responses)
Пример #5
0
 def func_with_tracing(*args, **kwargs):
     with trace(
             service_name=self.__class__.__name__,
             span_name="user defined inference api callback function",
     ):
         return self._func(*args, **kwargs)
Пример #6
0
 def api_func_with_tracing():
     with trace(
             request.headers,
             service_name=self.__class__.__name__,
     ):
         return api_func()