File tree Expand file tree Collapse file tree 1 file changed +5
-2
lines changed
Expand file tree Collapse file tree 1 file changed +5
-2
lines changed Original file line number Diff line number Diff line change 2525import asyncio
2626import atexit
2727import concurrent .futures
28+ import contextvars
2829import errno
2930import functools
3031import select
@@ -472,6 +473,8 @@ class SelectorThread:
472473 _closed = False
473474
474475 def __init__ (self , real_loop : asyncio .AbstractEventLoop ) -> None :
476+ self ._main_thread_ctx = contextvars .copy_context ()
477+
475478 self ._real_loop = real_loop
476479
477480 self ._select_cond = threading .Condition ()
@@ -491,7 +494,7 @@ async def thread_manager_anext() -> None:
491494 # clean up if we get to this point but the event loop is closed without
492495 # starting.
493496 self ._real_loop .call_soon (
494- lambda : self ._real_loop .create_task (thread_manager_anext ())
497+ lambda : self ._real_loop .create_task (thread_manager_anext ()), context = self . _main_thread_ctx
495498 )
496499
497500 self ._readers : Dict [_FileDescriptorLike , Callable ] = {}
@@ -618,7 +621,7 @@ def _run_select(self) -> None:
618621 raise
619622
620623 try :
621- self ._real_loop .call_soon_threadsafe (self ._handle_select , rs , ws )
624+ self ._real_loop .call_soon_threadsafe (self ._handle_select , rs , ws , context = self . _main_thread_ctx )
622625 except RuntimeError :
623626 # "Event loop is closed". Swallow the exception for
624627 # consistency with PollIOLoop (and logical consistency
You can’t perform that action at this time.
0 commit comments