Skip to content

Commit 6ad84d9

Browse files
committed
add option --enable-abort-handling
1 parent ffb1d9b commit 6ad84d9

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

lmdeploy/cli/serve.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ def add_parser_api_server():
7373
ArgumentHelper.max_log_len(parser)
7474
ArgumentHelper.disable_fastapi_docs(parser)
7575
ArgumentHelper.allow_terminate_by_client(parser)
76+
ArgumentHelper.enable_abort_handling(parser)
7677
# chat template args
7778
ArgumentHelper.chat_template(parser)
7879

@@ -266,6 +267,7 @@ def api_server(args):
266267
allow_methods=args.allow_methods,
267268
allow_headers=args.allow_headers,
268269
allow_terminate_by_client=args.allow_terminate_by_client,
270+
enable_abort_handling=args.enable_abort_handling,
269271
log_level=args.log_level.upper(),
270272
api_keys=args.api_keys,
271273
ssl=args.ssl,
@@ -293,6 +295,7 @@ def api_server(args):
293295
allow_methods=args.allow_methods,
294296
allow_headers=args.allow_headers,
295297
allow_terminate_by_client=args.allow_terminate_by_client,
298+
enable_abort_handling=args.enable_abort_handling,
296299
log_level=args.log_level.upper(),
297300
api_keys=args.api_keys,
298301
ssl=args.ssl,

lmdeploy/cli/utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,16 @@ def allow_terminate_by_client(parser):
454454
default=False,
455455
help='Enable server to be terminated by request from client')
456456

457+
@staticmethod
458+
def enable_abort_handling(parser):
459+
"""Add --enable-abort-handling argument to configure server abort
460+
request processing."""
461+
462+
return parser.add_argument('--enable-abort-handling',
463+
action='store_true',
464+
default=False,
465+
help='Enable server to handle client abort requests')
466+
457467
@staticmethod
458468
def cache_max_entry_count(parser):
459469
"""Add argument cache_max_entry_count to parser."""

lmdeploy/serve/openai/api_server.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class VariableInterface:
6565
# following is for tool parsers
6666
tool_parser: Optional[ToolParser] = None
6767
allow_terminate_by_client: bool = False
68+
enable_abort_handling: bool = False
6869

6970

7071
router = APIRouter()
@@ -1152,6 +1153,11 @@ async def free_cache(cache_free_request: DistServeCacheFreeRequest) -> JSONRespo
11521153
@router.post('/abort_request')
11531154
async def abort_request(request: AbortRequest, raw_request: Request = None):
11541155
"""Abort an ongoing request."""
1156+
if not VariableInterface.enable_abort_handling:
1157+
return Response(
1158+
status_code=501,
1159+
content='This server does not support abort requests. Enable with --enable-abort-handling flag.')
1160+
11551161
if request.abort_all:
11561162
await VariableInterface.async_engine.stop_all_session()
11571163
else:
@@ -1323,6 +1329,7 @@ def serve(model_path: str,
13231329
reasoning_parser: Optional[str] = None,
13241330
tool_call_parser: Optional[str] = None,
13251331
allow_terminate_by_client: bool = False,
1332+
enable_abort_handling: bool = False,
13261333
**kwargs):
13271334
"""An example to perform model inference through the command line
13281335
interface.
@@ -1381,6 +1388,7 @@ def serve(model_path: str,
13811388
logger.setLevel(log_level)
13821389

13831390
VariableInterface.allow_terminate_by_client = allow_terminate_by_client
1391+
VariableInterface.enable_abort_handling = enable_abort_handling
13841392
if api_keys is not None:
13851393
if isinstance(api_keys, str):
13861394
api_keys = api_keys.split(',')

0 commit comments

Comments
 (0)