Black Lives Matter. Please consider donating to Black Girls Code today.

Clearing Dash cache?

Let’s say you have an app setup to cache some data. But you need to clear that data, re-compute, and update a graph if a “Submit” button is clicked. What is the proper code for it? cache.clear() doesn’t seem to clear the cache, so I think I might be doing it wrong. This is an example code I have that I’m thinking about:

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
cache = Cache(app.server, config={
    #'CACHE_TYPE': 'redis',
    # Note that filesystem cache doesn't work on systems with ephemeral
    # filesystems like Heroku.
    'CACHE_TYPE': 'filesystem',
    'CACHE_DIR': 'cache',

    # should be equal to maximum number of users on the app at a single time
    # higher numbers will store more data in the filesystem / redis cache
    'CACHE_THRESHOLD': 200
})

def get_data(session_id, value):
    @cache.memoize()
    def serialize(session_id, value):

        # do my expensive computations

    return pd.read_json(serialize(session_id, value))

@callback for my button
def my_button():
    cache.clear()
2 Likes

Having looked into this recently, I do not believe deleting/clearing memoize()'d data is possible at the moment.

However, the dcc.Storage component has just come out for storing data, and it allows a separate callback to delete its contents, with an example in this post, which you could possibly do before updating it.