From 9e05c51ca6b2545accbfebbda510fdca8874b98d Mon Sep 17 00:00:00 2001 From: Sean Sheng Date: Tue, 30 Aug 2022 12:58:06 -0700 Subject: [PATCH] fix: log runner errors explicitly (#2952) --- bentoml/_internal/server/runner_app.py | 36 ++++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/bentoml/_internal/server/runner_app.py b/bentoml/_internal/server/runner_app.py index 9d7ddc7412..f4cafc57f1 100644 --- a/bentoml/_internal/server/runner_app.py +++ b/bentoml/_internal/server/runner_app.py @@ -213,16 +213,30 @@ async def _run(request: Request) -> Response: params = pickle.loads(await request.body()) params = params.map(AutoContainer.from_payload) - ret = await runner_method.async_run(*params.args, **params.kwargs) - - payload = AutoContainer.to_payload(ret, 0) - return Response( - payload.data, - headers={ - PAYLOAD_META_HEADER: json.dumps(payload.meta), - "Content-Type": f"application/vnd.bentoml.{payload.container}", - "Server": f"BentoML-Runner/{self.runner.name}/{runner_method.name}/{self.worker_index}", - }, - ) + + try: + ret = await runner_method.async_run(*params.args, **params.kwargs) + except BaseException as exc: + logger.error( + f"Exception on runner '{runner_method.runner.name}' method '{runner_method.name}'", + exc_info=exc, + ) + return Response( + status_code=500, + headers={ + "Content-Type": "text/plain", + "Server": f"BentoML-Runner/{self.runner.name}/{runner_method.name}/{self.worker_index}", + }, + ) + else: + payload = AutoContainer.to_payload(ret, 0) + return Response( + payload.data, + headers={ + PAYLOAD_META_HEADER: json.dumps(payload.meta), + "Content-Type": f"application/vnd.bentoml.{payload.container}", + "Server": f"BentoML-Runner/{self.runner.name}/{runner_method.name}/{self.worker_index}", + }, + ) return _run