Skip to content

Streamlit#

Streamlit is an open-source Python library that makes it easy to build beautiful custom web-apps for machine learning and data science.

Example Streamlit app

Deploying#

Streamlit apps can be deployed with the rsconnect-python package.

For Streamlit apps, the entrypoint is the name of the Python file containing your app. For example, if your app's source file is named main.py, use:

rsconnect deploy streamlit -n <saved server name> --entrypoint main.py ...

Example apps#

There are some Streamlit example apps available from the Streamlit developers:

To deploy one of these examples, first clone the repository:

git clone https://github.com/streamlit/<app-name>

Install any required dependencies. Test the app locally:

streamlit run <app-name>/streamlit_app.py

Then deploy to RStudio Connect:

rsconnect deploy streamlit -n <saved server name> --entrypoint streamlit_app.py <app-name>/

User meta-data#

You can retrieve the username and group information provided by RStudio Connect using the following Streamlit code:

import json

try:
    # Streamlit 1.8 or newer
    from streamlit.scriptrunner import get_script_run_ctx
except ImportError:
    from streamlit.script_run_context import get_script_run_ctx

from streamlit.server.server import Server

def get_user_info():
    session_id = get_script_run_ctx().session_id
    session_info = Server.get_current()._get_session_info(session_id)

    if session_info is None:
        raise Exception("Couldn't get your Streamlit session.")

    user_info_json = session_info.ws.request.headers.get("Rstudio-Connect-Credentials")
    if user_info_json is None:
        return None
    return json.loads(user_info_json)

def get_username():
    user_info = get_user_info()
    if user_info is None:
        return None
    return user_info.get("user")

st.write("Username: " + get_username())

User and Group uniqueness#

Most environments have unique usernames where each user identifies a single user and groups the name of the groups the user is a member of.

However, in large organizations with hundreds of users and groups, this may not be true. See the Admin Guide sections Credentials for Content for more information.

Limitations#

Version Compatibility#

  • RStudio Connect requires Streamlit v56.1 or higher.

Bokeh Compatibility#

  • Streamlit versions starting with 0.57 require Bokeh 2.0 or higher.
  • Streamlit versions prior to 0.57 require Bokeh 1.4.
  • Bokeh charts embedded within Streamlit can use Javascript callback functions, but Bokeh's Python callbacks are not supported by Streamlit.