Beispiel #1
0
 def handle_request(self, request: flask.Request):
     req = HTTPRequest.from_flask_request(request)
     inf_task = self.input_adapter.from_http_request(req)
     results = self.infer((inf_task, ))
     result = next(iter(results))
     response = self.output_adapter.to_http_response(result)
     return response.to_flask_response()
Beispiel #2
0
        def api_func():
            # handle_request may raise 4xx or 5xx exception.
            try:
                if request.headers.get(MARSHAL_REQUEST_HEADER):
                    reqs = DataLoader.split_requests(request.get_data())
                    responses = api.handle_batch_request(reqs)
                    response_body = DataLoader.merge_responses(responses)
                    response = make_response(response_body)
                else:
                    req = HTTPRequest.from_flask_request(request)
                    resp = api.handle_request(req)
                    response = resp.to_flask_response()
            except BentoMLException as e:
                log_exception(sys.exc_info())

                if 400 <= e.status_code < 500 and e.status_code not in (401,
                                                                        403):
                    response = make_response(
                        jsonify(message=
                                "BentoService error handling API request: %s" %
                                str(e)),
                        e.status_code,
                    )
                else:
                    response = make_response('', e.status_code)
            except Exception:  # pylint: disable=broad-except
                # For all unexpected error, return 500 by default. For example,
                # if users' model raises an error of division by zero.
                log_exception(sys.exc_info())

                response = make_response(
                    'An error has occurred in BentoML user code when handling this '
                    'request, find the error details in server logs',
                    500,
                )

            return response
Beispiel #3
0
 def view_function():
     req = HTTPRequest.from_flask_request(request)
     response = api.handle_request(req)
     return response.to_flask_response()