[Fix] Fix uvloop get_event_loop() is not suitable for 0.22.x (#13612)
Signed-off-by: lzy <tomlzy213@gmail.com> Co-authored-by: lzy <tomlzy213@gmail.com>
This commit is contained in:
@@ -69,7 +69,7 @@ dependencies = [
|
||||
"tqdm",
|
||||
"transformers==4.57.1",
|
||||
"uvicorn",
|
||||
"uvloop==0.21.0",
|
||||
"uvloop",
|
||||
"xgrammar==0.1.27",
|
||||
"grpcio==1.75.1", # keep it align with compile_proto.py
|
||||
"grpcio-tools==1.75.1", # keep it align with compile_proto.py
|
||||
|
||||
@@ -533,8 +533,7 @@ class Engine(EngineBase):
|
||||
zmq_handles=zmq_handles,
|
||||
flush_cache=flush_cache,
|
||||
)
|
||||
loop = asyncio.get_event_loop()
|
||||
return loop.run_until_complete(
|
||||
return self.loop.run_until_complete(
|
||||
self.tokenizer_manager.update_weights_from_ipc(obj, None)
|
||||
)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ from sglang.srt.managers.io_struct import (
|
||||
TokenizedGenerateReqInput,
|
||||
)
|
||||
from sglang.srt.server_args import PortArgs, ServerArgs
|
||||
from sglang.srt.utils import get_zmq_socket, kill_process_tree
|
||||
from sglang.srt.utils import get_or_create_event_loop, get_zmq_socket, kill_process_tree
|
||||
from sglang.utils import get_exception_traceback
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -876,7 +876,7 @@ class GrpcRequestManager:
|
||||
return
|
||||
|
||||
self.no_create_loop = True
|
||||
loop = asyncio.get_event_loop()
|
||||
loop = get_or_create_event_loop()
|
||||
self.asyncio_tasks.add(
|
||||
loop.create_task(print_exception_wrapper(self.handle_loop))
|
||||
)
|
||||
|
||||
@@ -98,6 +98,7 @@ from sglang.srt.utils import (
|
||||
dataclass_to_string_truncated,
|
||||
freeze_gc,
|
||||
get_bool_env_var,
|
||||
get_or_create_event_loop,
|
||||
get_zmq_socket,
|
||||
kill_process_tree,
|
||||
)
|
||||
@@ -1354,12 +1355,13 @@ class TokenizerManager(TokenizerCommunicatorMixin):
|
||||
|
||||
def auto_create_handle_loop(self):
|
||||
if self._chosen_loop is not None:
|
||||
current_loop = get_or_create_event_loop()
|
||||
assert (
|
||||
asyncio.get_event_loop() == self._chosen_loop
|
||||
), f"Please ensure only one event loop is ever used with SGLang. Previous loop: {self._chosen_loop}, current loop: {asyncio.get_event_loop()}"
|
||||
current_loop == self._chosen_loop
|
||||
), f"Please ensure only one event loop is ever used with SGLang. Previous loop: {self._chosen_loop}, current loop: {current_loop}"
|
||||
return
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop = get_or_create_event_loop()
|
||||
self._chosen_loop = loop
|
||||
self.asyncio_tasks.add(
|
||||
loop.create_task(print_exception_wrapper(self.handle_loop))
|
||||
|
||||
@@ -89,7 +89,7 @@ class LlavaImageProcessor(BaseMultimodalProcessor):
|
||||
grid_pinpoints: str,
|
||||
):
|
||||
if self.cpu_executor is not None:
|
||||
loop = asyncio.get_event_loop()
|
||||
loop = asyncio.get_running_loop()
|
||||
return await loop.run_in_executor(
|
||||
self.cpu_executor,
|
||||
LlavaImageProcessor._process_single_image_task,
|
||||
|
||||
@@ -104,6 +104,16 @@ show_time_cost = False
|
||||
time_infos = {}
|
||||
|
||||
|
||||
def get_or_create_event_loop():
|
||||
"""Gets the running event loop or creates a new one if it doesn't exist."""
|
||||
try:
|
||||
return asyncio.get_running_loop()
|
||||
except RuntimeError:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
return loop
|
||||
|
||||
|
||||
HIP_FP8_E4M3_FNUZ_MAX = 224.0
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ from typing import Optional
|
||||
import numpy as np
|
||||
|
||||
import sglang as sgl
|
||||
from sglang.srt.utils import get_or_create_event_loop
|
||||
from sglang.utils import download_and_cache_file, read_jsonl
|
||||
|
||||
INVALID = -9999999
|
||||
@@ -89,7 +90,7 @@ def run_eval(args):
|
||||
# Run requests
|
||||
tic = time.perf_counter()
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop = get_or_create_event_loop()
|
||||
|
||||
outputs = loop.run_until_complete(
|
||||
concurrent_generate(engine, prompts, sampling_param)
|
||||
|
||||
Reference in New Issue
Block a user