From c7bdd1b443360b6d44eff5abea22662c2abe5199 Mon Sep 17 00:00:00 2001 From: Max Sky Date: Sat, 11 Jul 2026 03:10:32 +0700 Subject: [PATCH 1/2] Add Windows event loop policy for compatibility --- taskiq/cli/worker/run.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/taskiq/cli/worker/run.py b/taskiq/cli/worker/run.py index 24d8f8db..ba923c37 100644 --- a/taskiq/cli/worker/run.py +++ b/taskiq/cli/worker/run.py @@ -124,6 +124,8 @@ def interrupt_handler(signum: int, _frame: Any) -> None: logger.debug("UVLOOP found. Using it as async runner") loop = uvloop.new_event_loop() # type: ignore else: + if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) From 18fa3bbb41acf2ed39a6b28ad5f8e475762c63de Mon Sep 17 00:00:00 2001 From: Max Sky Date: Fri, 7 Aug 2026 17:55:04 +0800 Subject: [PATCH 2/2] Set Windows event loop policy --- taskiq/cli/worker/run.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/taskiq/cli/worker/run.py b/taskiq/cli/worker/run.py index ba923c37..b6b91b92 100644 --- a/taskiq/cli/worker/run.py +++ b/taskiq/cli/worker/run.py @@ -119,13 +119,14 @@ def interrupt_handler(signum: int, _frame: Any) -> None: signal.signal(signal.SIGTERM, interrupt_handler) if sys.platform != "win32": signal.signal(signal.SIGHUP, interrupt_handler) + else: + # Windows requires the selector event loop policy. + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) if uvloop is not None: logger.debug("UVLOOP found. Using it as async runner") loop = uvloop.new_event_loop() # type: ignore else: - if sys.platform == "win32": - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) loop = asyncio.new_event_loop() asyncio.set_event_loop(loop)