lifecycle.py 868 B

123456789101112131415161718192021222324252627
  1. from typing import Awaitable, Callable, Union
  2. from .. import globals
  3. def on_connect(handler: Union[Callable, Awaitable]) -> None:
  4. globals.get_client().connect_handlers.append(handler)
  5. def on_disconnect(handler: Union[Callable, Awaitable]) -> None:
  6. globals.get_client().disconnect_handlers.append(handler)
  7. def on_startup(handler: Union[Callable, Awaitable]) -> None:
  8. if globals.state == globals.State.STARTED:
  9. raise RuntimeError('Unable to register another startup handler. NiceGUI has already been started.')
  10. globals.startup_handlers.append(handler)
  11. def on_shutdown(handler: Union[Callable, Awaitable]) -> None:
  12. globals.shutdown_handlers.append(handler)
  13. async def shutdown() -> None:
  14. if globals.reload:
  15. raise Exception('ui.shutdown is not supported when auto-reload is enabled')
  16. globals.server.should_exit = True