From 002d037359858beca1e40e6aa2377740cc0a130d Mon Sep 17 00:00:00 2001 From: fzyzcjy <5236035+fzyzcjy@users.noreply.github.com> Date: Sun, 19 Oct 2025 16:12:49 +0800 Subject: [PATCH] Avoid generation gets hanging when user specifies multiple event loops (#5162) Co-authored-by: Yineng Zhang --- python/sglang/srt/managers/tokenizer_manager.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/python/sglang/srt/managers/tokenizer_manager.py b/python/sglang/srt/managers/tokenizer_manager.py index 3cd8cac5f..4b90411d5 100644 --- a/python/sglang/srt/managers/tokenizer_manager.py +++ b/python/sglang/srt/managers/tokenizer_manager.py @@ -267,7 +267,7 @@ class TokenizerManager(TokenizerCommunicatorMixin): ) # Request states - self.no_create_loop = False + self._chosen_loop = None self.rid_to_state: Dict[str, ReqState] = {} self.asyncio_tasks = set() @@ -1170,11 +1170,14 @@ class TokenizerManager(TokenizerCommunicatorMixin): return background_tasks def auto_create_handle_loop(self): - if self.no_create_loop: + if self._chosen_loop is not None: + 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()}" return - self.no_create_loop = True loop = asyncio.get_event_loop() + self._chosen_loop = loop self.asyncio_tasks.add( loop.create_task(print_exception_wrapper(self.handle_loop)) )