浏览代码

move ui.shutdown into lifecycle module

Falko Schindler 2 年之前
父节点
当前提交
6ff3b31fed
共有 3 个文件被更改,包括 17 次插入15 次删除
  1. 3 1
      nicegui/globals.py
  2. 13 5
      nicegui/lifecycle.py
  3. 1 9
      nicegui/ui.py

+ 3 - 1
nicegui/globals.py

@@ -4,6 +4,8 @@ import asyncio
 import logging
 import logging
 from typing import TYPE_CHECKING, Awaitable, Callable, List, Union
 from typing import TYPE_CHECKING, Awaitable, Callable, List, Union
 
 
+from uvicorn import Server
+
 if TYPE_CHECKING:
 if TYPE_CHECKING:
     import justpy as jp
     import justpy as jp
     from starlette.applications import Starlette
     from starlette.applications import Starlette
@@ -13,7 +15,7 @@ if TYPE_CHECKING:
 
 
 app: 'Starlette'
 app: 'Starlette'
 config: 'Config'
 config: 'Config'
-server: 'uvicorn.Server'
+server: Server
 page_stack: List['Page'] = []
 page_stack: List['Page'] = []
 view_stack: List['jp.HTMLBaseComponent'] = []
 view_stack: List['jp.HTMLBaseComponent'] = []
 tasks: List[asyncio.tasks.Task] = []
 tasks: List[asyncio.tasks.Task] = []

+ 13 - 5
nicegui/lifecycle.py

@@ -1,19 +1,27 @@
 from typing import Awaitable, Callable, Union
 from typing import Awaitable, Callable, Union
 
 
-from .globals import connect_handlers, disconnect_handlers, shutdown_handlers, startup_handlers
+import justpy as jp
+
+from . import globals
 
 
 
 
 def on_connect(self, handler: Union[Callable, Awaitable]):
 def on_connect(self, handler: Union[Callable, Awaitable]):
-    connect_handlers.append(handler)
+    globals.connect_handlers.append(handler)
 
 
 
 
 def on_disconnect(self, handler: Union[Callable, Awaitable]):
 def on_disconnect(self, handler: Union[Callable, Awaitable]):
-    disconnect_handlers.append(handler)
+    globals.disconnect_handlers.append(handler)
 
 
 
 
 def on_startup(self, handler: Union[Callable, Awaitable]):
 def on_startup(self, handler: Union[Callable, Awaitable]):
-    startup_handlers.append(handler)
+    globals.startup_handlers.append(handler)
 
 
 
 
 def on_shutdown(self, handler: Union[Callable, Awaitable]):
 def on_shutdown(self, handler: Union[Callable, Awaitable]):
-    shutdown_handlers.append(handler)
+    globals.shutdown_handlers.append(handler)
+
+
+async def shutdown(self) -> None:
+    for socket in [s for page in jp.WebPage.sockets.values() for s in page.values()]:
+        await socket.close()
+    globals.server.should_exit = True

+ 1 - 9
nicegui/ui.py

@@ -1,7 +1,5 @@
 # isort:skip_file
 # isort:skip_file
 import os
 import os
-from . import globals
-import justpy as jp
 
 
 
 
 class Ui:
 class Ui:
@@ -46,7 +44,7 @@ class Ui:
     from .elements.tree import Tree as tree
     from .elements.tree import Tree as tree
     from .elements.update import update
     from .elements.update import update
     from .elements.upload import Upload as upload
     from .elements.upload import Upload as upload
-    from .lifecycle import on_connect, on_disconnect, on_shutdown, on_startup
+    from .lifecycle import on_connect, on_disconnect, on_shutdown, on_startup, shutdown
     from .routes import add_route, add_static_files, get
     from .routes import add_route, add_static_files, get
     from .timer import Timer as timer
     from .timer import Timer as timer
 
 
@@ -77,9 +75,3 @@ class Ui:
 
 
     if 'three' not in _excludes:
     if 'three' not in _excludes:
         from .elements.scene import Scene as scene
         from .elements.scene import Scene as scene
-
-    @staticmethod
-    async def shutdown():
-        for socket in [s for page in jp.WebPage.sockets.values() for s in page.values()]:
-            await socket.close()
-        globals.server.should_exit = True