Hi Emil, this feature is awesome - thank you so much for creating it! I have a small question - why is the drawback of this approach: “you cannot use client side callbacks as they will only be able to access the key”.
Since the data is never transferred to the client, it cannot be used in a client side callback
I’m interested in using your package as I need some server side caching of data and serverside rendering too. Do you have any plans of creating a version that can be installed with Anaconda? Thanks!
I don’t use conda myself, so i didn’t consider a conda release. Is there a reason why you can’t use pip?
How do you set the threshold when using
DashProxy'? It doesn't like output_defaults
. I'm using the transforms, when I use dash_extensions.enrich.Dash
it complains about having multiple values for keyword argumenttransforms
. I have many ServersideOutput`s so I prefer to define it globally instead of inside each callback.
If you use the
DashProxy object, you can pass the keywords to the constructor of the transform itself,
app = DashProxy(transforms=[ ServersideOutputTransform(backend=mybackend), # enable use of ServersideOutput objects ])
Hi @Emil !
Many thanks for your contributions. Im finding this really helpful.
Do you know how I could use a RedisCache for caching with dash-extensions? I am using the latest version of dash-extensions. Or should I go to dash-extensions==0.0.23 which allows any flask caching backend?
Thanks! I would recommend using the newest version. It should be realatively easy to implement a Redis binding. Here is the file system implementation,
Hi @Emil ,
Thanks for the tip! Ill try implementing this and is it works well, i might consider adding it in a PR request
I added a simple Redis binding in the latest release. You can try startnummer with that one
Hey, Love this concept, Ive gone to test it out and I get a problem due to my main callback also needing a daq.BooleanSwitch however this cant be pickled. Any advice on how to get around this?
Can you post a MWE demonstrating the issue? Why can’t it be pickled?
Update: I found the issue, it was that the callback I use to cache data also output the required layout (which contained the BooleanSwitch Method) after splitting out the data caching and layout selections this now works
Strange I cant seem to reproduce it in a MWE, but the actual error is “_pickle.PicklingError: Can’t pickle <class ‘BooleanSwitch’>: attribute lookup BooleanSwitch on builtins failed” if that helps?
Another issue I’m running into with this is using the @cc.cached_callback where I’m outputting data to dcc.Store but also trying to get the current State of that id. see MWE below, when I try to execute this the error I get is TypeError: object supporting the buffer API required.
Any idea on how I can get around this?
@cc.cached_callback( [ Output('df_history', 'data'), ], [ Input('url', 'pathname') ], [ State('df_history', 'data'), ]) def store_data(pathname, df_history): if df_history is None: <make dataframe here> return dataframe else: raise PreventUpdate
It seems like you are using an old version? The
cached_callback syntax was deprecated some time ago.
Thanks for the info, in your original post you were using the cached_callback, would you be able to share any documentation on how this server side caching should now be implemented?
Up-to-date examples are available in the examples folder on github, e.g.
Hi @Emil ,
I’m beginner to plotting. I’m trying to integrate dash with Flask and I have this error.
Could you help me?
dash : ‘1.21.0’
I have tried ServersideOutput. It works fine. But sometimes, some of my charts get this error: cannot import name ‘ValidatorCache’ from partially initialized module ‘plotly.validator_cache’. Do you know what that is?
I don’t think that is related to the Serverside output.