Preferred use of dcc.Store / other options for larger data sets

In our app we query relatively large time-series datasets. After we’ve received the data we store it in a dcc.Store object because the data are shared for a few read-only callbacks.

We get an error along the lines of “Server took too long to respond” and then our app crashes without updating the callbacks that rely on the data. This only happens with a set of queries that we know are requesting relatively large (>50MB) data responses.

My assumption is that the data are taking too long to be sent over the wire to the client to be stored and processed. Are there common best practices to solve this problem? I’ve read the following posts:

but neither have a satisfying answer (ServerSideOutput seems like a possible candidate but I don’t see an explanation of when specifically I ought to use it.)

Any guidance would be immensely appreciated!

A note: the problem doesn’t arise when we run the Dash server locally, only when we’re interacting with it deployed.

The serverside output is one possible approach. You can use it whenever you don’t need to send all data to the client, i.e. your use case seems like a good match. Interacting with a cache directly is another.