st.status 微调器继续不必要地显示,即使我的函数已缓存

问题描述 投票:0回答:1

这是我的代码:

@st.cache_data(show_spinner=False)
def fetch_data():
    with st.status("Buscando datos...", expanded=True) as status:
        time.sleep(2)
        st.write("Partidos encontrados...")
        time.sleep(2)
        st.write("Descargando datos...")
        time.sleep(2)
        st.write("Dibujando tabla...")
        game_data = scraper.get_data(game_list_input=games_id)
        data_df = scraper.get_data_df(data_list=game_data)
        games_data = data_df.to_pandas()
        time.sleep(3)
        status.update(
            label="¡Descarga completada!", state="complete", expanded=False
        )
        return games_data

    
games_data = fetch_data()

缓存工作正常,

fetch_data()
功能在每次重新加载页面时都不会执行,但微调框一直显示。我正在使用
show_spinner=False
但它也不起作用,如下图所示:

enter image description here

表格已显示,但您可以看到微调器仍然在那里。

如果您需要知道,我正在为 MLB API 使用 API Scrapper。

get_data
get_data_df
是 API Scrapper 中返回极坐标数据帧的类的方法。

python pandas streamlit
1个回答
0
投票

这是因为

show_spinner=False
仅在您使用
st.spinner()
而不是
st.status()
时才有效。

您可以使用旋转器重新创建相同的东西,如下所示:

@st.cache_data(show_spinner=False)
def fetch_data():
    with st.spinner("Buscando datos..."):
        time.sleep(2)
        st.write("Partidos encontrados...")
        time.sleep(2)
        st.write("Descargando datos...")
        time.sleep(2)
        st.write("Dibujando tabla...")
        game_data = scraper.get_data(game_list_input=games_id)
        data_df = scraper.get_data_df(data_list=game_data)
        games_data = data_df.to_pandas()
        time.sleep(3)
        st.success("¡Descarga completada!")        
        return games_data

    
games_data = fetch_data()

如果需要,您可以稍微调整它以添加扩展器,就像我们在状态中一样。

© www.soinside.com 2019 - 2024. All rights reserved.