Refresh cache daily

My application uses a data file, that is refreshed with new data daily. The read operation for the data in my app is cached, however I would like to enforce, that the file is reread once or maybe twice a day. Is there a way built-in Streamlit to do this? If not, I would probably determine the file timestamp and then force the read function to be executed. How would that work, is there any command such as:

@st.cache(allow_output_mutation=True)
def read_files() -> pd.DataFrame:
    ...
    return data
if expired(file):
    st.reset_cache
data = read_files()

The new release of Streamlit has TTL for st.cache in float which is the number of seconds that should keep the cache. Would that be OK?

1 Like

perfect! thanks a lot.

Is there a way to refresh the cache on a specific schedule? For example, I’d find it useful to refresh the cache every day at 3AM. Using ttl makes the refresh dependant on the time the app was started and that’s less ideal.

2 Likes

@Adrien_Treuille @randyzwitch

Just following up the above question.
I want to clear the cache everyday at 10 clock. So, when a user logs in to my app , and if the time is above 10, I have to clear the cache and rerun the app.
Is there anyway to do it

I’m sure there’s some work-around you could do, but it’s not something we’ve built into the product. Why exactly 10 o’clock?

Morning 10 o’clock is when the database gets refreshed with new data and I want to refresh the app with fresh values from database.

1 Like

Hi there,
Some news about the possibility to refresh the app based on a specific time of the day ? (something like CRON syntax for instance)

3 Likes