1111 Type ,
1212)
1313
14- from jupyter_client .manager import KernelManager
15- from .restarter import IOLoopKernelRestarter
14+ from jupyter_client .manager import KernelManager , AsyncKernelManager
15+ from .restarter import IOLoopKernelRestarter , AsyncIOLoopKernelRestarter
1616
1717
1818def as_zmqstream (f ):
@@ -21,9 +21,11 @@ def wrapped(self, *args, **kwargs):
2121 return ZMQStream (socket , self .loop )
2222 return wrapped
2323
24+
2425class IOLoopKernelManager (KernelManager ):
2526
2627 loop = Instance ('tornado.ioloop.IOLoop' )
28+
2729 def _loop_default (self ):
2830 return ioloop .IOLoop .current ()
2931
@@ -59,3 +61,43 @@ def stop_restarter(self):
5961 connect_iopub = as_zmqstream (KernelManager .connect_iopub )
6062 connect_stdin = as_zmqstream (KernelManager .connect_stdin )
6163 connect_hb = as_zmqstream (KernelManager .connect_hb )
64+
65+
66+ class AsyncIOLoopKernelManager (AsyncKernelManager ):
67+
68+ loop = Instance ('tornado.ioloop.IOLoop' )
69+
70+ def _loop_default (self ):
71+ return ioloop .IOLoop .current ()
72+
73+ restarter_class = Type (
74+ default_value = AsyncIOLoopKernelRestarter ,
75+ klass = AsyncIOLoopKernelRestarter ,
76+ help = (
77+ 'Type of KernelRestarter to use. '
78+ 'Must be a subclass of AsyncIOLoopKernelManager.\n '
79+ 'Override this to customize how kernel restarts are managed.'
80+ ),
81+ config = True ,
82+ )
83+ _restarter = Instance ('jupyter_client.ioloop.AsyncIOLoopKernelRestarter' , allow_none = True )
84+
85+ def start_restarter (self ):
86+ if self .autorestart and self .has_kernel :
87+ if self ._restarter is None :
88+ self ._restarter = self .restarter_class (
89+ kernel_manager = self , loop = self .loop ,
90+ parent = self , log = self .log
91+ )
92+ self ._restarter .start ()
93+
94+ def stop_restarter (self ):
95+ if self .autorestart :
96+ if self ._restarter is not None :
97+ self ._restarter .stop ()
98+ self ._restarter = None
99+
100+ connect_shell = as_zmqstream (AsyncKernelManager .connect_shell )
101+ connect_iopub = as_zmqstream (AsyncKernelManager .connect_iopub )
102+ connect_stdin = as_zmqstream (AsyncKernelManager .connect_stdin )
103+ connect_hb = as_zmqstream (AsyncKernelManager .connect_hb )
0 commit comments