这是我的代码:
@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
但它也不起作用,如下图所示:
表格已显示,但您可以看到微调器仍然在那里。
如果您需要知道,我正在为 MLB API 使用 API Scrapper。
get_data
和 get_data_df
是 API Scrapper 中返回极坐标数据帧的类的方法。
这是因为
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()
如果需要,您可以稍微调整它以添加扩展器,就像我们在状态中一样。