|
@@ -18,8 +18,9 @@ from .storage import RequestTrackingMiddleware
|
|
class Server(uvicorn.Server):
|
|
class Server(uvicorn.Server):
|
|
|
|
|
|
def run(self, sockets: List[Any] = None) -> None:
|
|
def run(self, sockets: List[Any] = None) -> None:
|
|
- globals.app.add_middleware(RequestTrackingMiddleware)
|
|
|
|
- globals.app.add_middleware(SessionMiddleware, secret_key='some_random_string') # TODO real random string
|
|
|
|
|
|
+ if self.config.storage_secret is not None:
|
|
|
|
+ globals.app.add_middleware(RequestTrackingMiddleware)
|
|
|
|
+ globals.app.add_middleware(SessionMiddleware, secret_key=self.config.storage_secret)
|
|
super().run(sockets=sockets)
|
|
super().run(sockets=sockets)
|
|
|
|
|
|
|
|
|
|
@@ -43,6 +44,7 @@ def run(*,
|
|
uvicorn_reload_excludes: str = '.*, .py[cod], .sw.*, ~*',
|
|
uvicorn_reload_excludes: str = '.*, .py[cod], .sw.*, ~*',
|
|
exclude: str = '',
|
|
exclude: str = '',
|
|
tailwind: bool = True,
|
|
tailwind: bool = True,
|
|
|
|
+ storage_secret: Optional[str] = None,
|
|
**kwargs: Any,
|
|
**kwargs: Any,
|
|
) -> None:
|
|
) -> None:
|
|
'''ui.run
|
|
'''ui.run
|
|
@@ -69,7 +71,8 @@ def run(*,
|
|
:param exclude: comma-separated string to exclude elements (with corresponding JavaScript libraries) to save bandwidth
|
|
:param exclude: comma-separated string to exclude elements (with corresponding JavaScript libraries) to save bandwidth
|
|
(possible entries: aggrid, audio, chart, colors, interactive_image, joystick, keyboard, log, markdown, mermaid, plotly, scene, video)
|
|
(possible entries: aggrid, audio, chart, colors, interactive_image, joystick, keyboard, log, markdown, mermaid, plotly, scene, video)
|
|
:param tailwind: whether to use Tailwind (experimental, default: `True`)
|
|
:param tailwind: whether to use Tailwind (experimental, default: `True`)
|
|
- :param kwargs: additional keyword arguments are passed to `uvicorn.run`
|
|
|
|
|
|
+ :param storage_secret: secret key for browser based storage (default: `None`, a value is required to enable ui.storage.individual and ui.storage.browser)
|
|
|
|
+ :param kwargs: additional keyword arguments are passed to `uvicorn.run`
|
|
'''
|
|
'''
|
|
globals.ui_run_has_been_called = True
|
|
globals.ui_run_has_been_called = True
|
|
globals.reload = reload
|
|
globals.reload = reload
|
|
@@ -125,6 +128,7 @@ def run(*,
|
|
log_level=uvicorn_logging_level,
|
|
log_level=uvicorn_logging_level,
|
|
**kwargs,
|
|
**kwargs,
|
|
)
|
|
)
|
|
|
|
+ config.storage_secret = storage_secret
|
|
globals.server = Server(config=config)
|
|
globals.server = Server(config=config)
|
|
|
|
|
|
if (reload or config.workers > 1) and not isinstance(config.app, str):
|
|
if (reload or config.workers > 1) and not isinstance(config.app, str):
|