lifecycle.py 825 B

1234567891011121314151617181920212223242526272829
  1. from typing import Awaitable, Callable, Union
  2. import justpy as jp
  3. from . import globals
  4. def on_connect(self, handler: Union[Callable, Awaitable]):
  5. globals.connect_handlers.append(handler)
  6. def on_disconnect(self, handler: Union[Callable, Awaitable]):
  7. globals.disconnect_handlers.append(handler)
  8. def on_startup(self, handler: Union[Callable, Awaitable]):
  9. globals.startup_handlers.append(handler)
  10. def on_shutdown(self, handler: Union[Callable, Awaitable]):
  11. globals.shutdown_handlers.append(handler)
  12. async def shutdown(self) -> None:
  13. if globals.config.reload:
  14. raise Exception('ui.shutdown is not supported when auto-reload is enabled')
  15. for socket in [s for page in jp.WebPage.sockets.values() for s in page.values()]:
  16. await socket.close()
  17. globals.server.should_exit = True