Monkey patch uvicorn multi worker is_alive timeout (#10159)

Co-authored-by: Huang Long <121648372+llll114@users.noreply.github.com>
This commit is contained in:
Liangsheng Yin
2025-09-08 17:43:23 +08:00
committed by GitHub
parent ec99668ab7
commit 72f9fc5f11
2 changed files with 19 additions and 0 deletions

View File

@@ -93,6 +93,7 @@ from sglang.srt.managers.io_struct import (
from sglang.srt.managers.multi_tokenizer_mixin import (
MultiTokenizerManager,
get_main_process_id,
monkey_patch_uvicorn_multiprocessing,
read_from_shared_memory,
write_data_for_multi_tokenizer,
)
@@ -1219,6 +1220,9 @@ def launch_server(
"level": "INFO",
"propagate": False,
}
monkey_patch_uvicorn_multiprocessing()
uvicorn.run(
"sglang.srt.entrypoints.http_server:app",
host=server_args.host,

View File

@@ -19,6 +19,7 @@ import os
import pickle
import sys
import threading
from functools import partialmethod
from multiprocessing import shared_memory
from typing import Any, Dict
@@ -556,3 +557,17 @@ def write_data_for_multi_tokenizer(
args_shm.close()
return args_shm
def monkey_patch_uvicorn_multiprocessing(timeout: float = 10):
"""Monkey patch uvicorn multiprocessing is_alive timeout"""
# from default 5s -> 10s
try:
from uvicorn.supervisors.multiprocess import Process
Process.is_alive = partialmethod(Process.is_alive, timeout=timeout)
except ImportError:
logger.warning(
"uvicorn.supervisors.multiprocess not found, skipping monkey patch"
)