Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions python/sglang/srt/entrypoints/http_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,19 @@ async def stream_results() -> AsyncIterator[bytes]:
yield b"data: " + orjson.dumps(
out, option=orjson.OPT_NON_STR_KEYS
) + b"\n\n"
except HTTPException as e:
out = {
"error": {
"message": str(e.detail),
"type": str(e.status_code),
"param": None,
"code": e.status_code,
}
}
logger.error(f"[http_server] http exception: {e}")
yield b"data: " + orjson.dumps(
out, option=orjson.OPT_NON_STR_KEYS
) + b"\n\n"
yield b"data: [DONE]\n\n"

return StreamingResponse(
Expand Down
10 changes: 8 additions & 2 deletions python/sglang/srt/entrypoints/openai/serving_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import uuid
from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, List, Optional, Union

from fastapi import Request
from fastapi import HTTPException, Request
from fastapi.responses import ORJSONResponse, StreamingResponse

from sglang.srt.entrypoints.openai.protocol import (
Expand Down Expand Up @@ -663,7 +663,13 @@ async def _generate_chat_stream(
except ValueError as e:
error = self.create_streaming_error_response(str(e))
yield f"data: {error}\n\n"

except HTTPException as e:
error = self.create_streaming_error_response(
message=str(e.detail),
err_type=str(e.status_code),
status_code=e.status_code,
)
yield f"data: {error}\n\n"
yield "data: [DONE]\n\n"

async def _handle_non_streaming_request(
Expand Down
Loading