|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
| 3 | +import asyncio |
| 4 | + |
3 | 5 | from jupyter_server.extension.application import ExtensionApp
|
4 | 6 | from jupyter_server.services.kernels.handlers import _kernel_id_regex
|
5 | 7 |
|
@@ -27,27 +29,31 @@ def initialize_handlers(self):
|
27 | 29 | get_logger().warning("%i collaboration extensions found.", n_extensions)
|
28 | 30 | rtc_extension = next(iter(rtc_extensions))
|
29 | 31 |
|
30 |
| - self.__tasks = ExecutionStack() |
| 32 | + self.__execution_stack = ExecutionStack( |
| 33 | + manager=self.settings["kernel_manager"], ydoc_extension=rtc_extension |
| 34 | + ) |
31 | 35 |
|
32 | 36 | self.handlers.extend(
|
33 | 37 | [
|
34 | 38 | (
|
35 | 39 | f"/api/kernels/{_kernel_id_regex}/execute",
|
36 | 40 | ExecuteHandler,
|
37 |
| - {"ydoc_extension": rtc_extension, "execution_stack": self.__tasks}, |
| 41 | + {"execution_stack": self.__execution_stack}, |
38 | 42 | ),
|
39 | 43 | (
|
40 | 44 | f"/api/kernels/{_kernel_id_regex}/input",
|
41 | 45 | InputHandler,
|
| 46 | + {"execution_stack": self.__execution_stack}, |
42 | 47 | ),
|
43 | 48 | (
|
44 | 49 | f"/api/kernels/{_kernel_id_regex}/requests/{_request_id_regex}",
|
45 | 50 | RequestHandler,
|
46 |
| - {"execution_stack": self.__tasks}, |
| 51 | + {"execution_stack": self.__execution_stack}, |
47 | 52 | ),
|
48 | 53 | ]
|
49 | 54 | )
|
50 | 55 |
|
51 | 56 | async def stop_extension(self):
|
52 |
| - if hasattr(self, "__tasks"): |
53 |
| - del self.__tasks |
| 57 | + if hasattr(self, "__execution_stack"): |
| 58 | + get_logger().info("Disposing the execution stack…") |
| 59 | + await asyncio.wait_for(self.__execution_stack.dispose(), timeout=3) |
0 commit comments