ServeStreamlit¶
- class lightning.app.components.serve.streamlit.ServeStreamlit(*args, **kwargs)¶
Bases:
LightningWork
,ABC
The
ServeStreamlit
work allows you to use streamlit from a work.You can optionally build a model in the
build_model
hook, which will only be called once per session.LightningWork, or Work in short, is a building block for long-running jobs.
The LightningApp runs its
LightningFlow
component within an infinite loop and track theLightningWork
status update.Use LightningWork for third-party services or for launching heavy jobs such as downloading data, training or serving a model.
Each LightningWork is running in its own independent process. Works are self-isolated from the rest, e.g any state changes happening within the work will be reflected within the flow but not the other way around.
- Parameters
parallel¶ – Whether to run in parallel mode or not. When False, the flow waits for the work to finish.
cache_calls¶ – Whether the
run
method should cache its input arguments and not run again when provided with the same arguments in subsequent calls.raise_exception¶ – Whether to re-raise an exception in the flow when raised from within the work run method.
host¶ – Bind socket to this host
port¶ – Bind socket to this port. Be default, this is None and should be called within your run method.
local_build_config¶ – The local BuildConfig isn’t used until Lightning supports DockerRuntime.
cloud_build_config¶ – The cloud BuildConfig enables user to easily configure machine before running this work.
run_once¶ – Deprecated in favor of cache_calls. This will be removed soon.
start_with_flow¶ – Whether the work should be started at the same time as the root flow. Only applies to works defined in
__init__
.
Learn More About Lightning Work Inner Workings
- build_model()¶
Optionally override to instantiate and return your model.
The model will be accessible under
self.model
.- Return type
- configure_layout()¶
Configure the UI of this LightningWork.
You can either :rtype:
str
Return a single
Frontend
object to serve a user interface for this Work.Return a string containing a URL to act as the user interface for this Work.
Return
None
to indicate that this Work doesn’t currently have a user interface.
Example: Serve a static directory (with at least a file index.html inside).
from lightning.app.frontend import StaticWebFrontend class Work(LightningWork): def configure_layout(self): return StaticWebFrontend("path/to/folder/to/serve")
Example: Arrange the UI of my children in tabs (default UI by Lightning).
class Work(LightningWork): def configure_layout(self): return [ dict(name="First Tab", content=self.child0), dict(name="Second Tab", content=self.child1), dict(name="Lightning", content="https://lightning.ai"), ]
If you don’t implement
configure_layout
, Lightning will useself.url
.Note
This hook gets called at the time of app creation and then again as part of the loop. If desired, a returned URL can depend on the state. This is not the case if the work returns a
Frontend
. These need to be provided at the time of app creation in order for the runtime to start the server.
- on_exit()¶
Override this hook to add your logic when the work is exiting.
Note: This hook is not guaranteed to be called when running in the cloud.
- Return type