run.py 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. from typing import Awaitable, Callable, Optional, Union
  2. import inspect
  3. import sys
  4. import webbrowser
  5. import uvicorn
  6. from . import globals
  7. if not globals.config.interactive and globals.config.reload and not inspect.stack()[-2].filename.endswith('spawn.py'):
  8. if globals.config.show:
  9. webbrowser.open(f'http://{globals.config.host}:{globals.config.port}/')
  10. uvicorn.run('nicegui:app', host=globals.config.host, port=globals.config.port, lifespan='on', reload=True,
  11. log_level=globals.config.uvicorn_logging_level)
  12. sys.exit()
  13. def run(self, *,
  14. host: str = '0.0.0.0',
  15. port: int = 8080,
  16. title: str = 'NiceGUI',
  17. favicon: str = 'favicon.ico',
  18. dark: Optional[bool] = False,
  19. reload: bool = True,
  20. show: bool = True,
  21. on_connect: Optional[Union[Callable, Awaitable]] = None,
  22. uvicorn_logging_level: str = 'warning',
  23. main_page_classes: str = 'q-ma-md column items-start',
  24. ):
  25. if globals.config.interactive or reload == False: # NOTE: if reload == True we already started uvicorn above
  26. if show:
  27. webbrowser.open(f'http://{host if host != "0.0.0.0" else "127.0.0.1"}:{port}/')
  28. uvicorn.run(globals.app, host=host, port=port, lifespan='on', log_level=uvicorn_logging_level)