Hello, I have an app deployed as docker container in aws with nginx as reverse proxy. I am encountering a strange behaviour of the app that suddenly appears : different users using the app and sharing the same session_state , anyone could provide hints on how to address this issue would be really appreciated!
Can you share your code and give more context to what you are expecting vs experiencing? Session state is certainly not supposed to shared between users. Are you using any caching that might need to be configured differently maybe?
I appreciate your input I have indeed implemented caching using both cache_resource
for functions and cache_data
for uploaded files. However, I have encountered an issue where I was seeing cached data from other users. To address this, I have implemented a temporary workaround by clearing the cache on each rerun. Although this solution ensures data privacy, it does slow down the application and prevents me from fully utilizing the benefits of caching.
For more context on the app it is available at www.microbioma16s.it and the code is available at the GitHub repository at microbiome/italiano.py at main Β· cami3/microbiome Β· GitHub . Thank you for any support!
You can store data in session_state
instead of using st.cache_xxx
.
Thank you for assistance ! In the code I use both st.session_state
and st.cache_xxx
and when I open different tabs in the same or different browsers I have noticed some unexpected strange cross talks of session_state. I implemented cache clearing so it seems that session_state is shared among tabs. I would highly appreciate any hint.
st.session_state
is shared aong sessions but its items / attributes are not. So st.session_state
is the same object in all sessions, but st.session_state.key
or st.session_stat["key"]
may ot may not exist on each session and it is a different object when it does.
Thank you for the clear explanation. I tried not to use caching at all but only st.session_state.key
and the weird behaviour of seeing other users data stopped. Then, I also tried replacing st.cache_xxx
with the deprecated st.cache
and again the crosstalk among users data stopped. Is it somehow possible that caching using st.cache_resource
or st.cache_data
gives rise to crosstalk of data among users? Thank you for your assistance !|
If you cache some data in one session and any user in any session has that cached function with the same parameters, they will see that cached data created from that first session.
If you write something to st.session_state.data
in one session, that same information will not be accessible in another session. The other session will have some other object in st.session_state.data
or possibly none at all.
Generally speaking, donβt cache things that you want to keep private to a specific user/session. (You can certainly pass in some kind of user id as a parameter to a cached function if you want to prevent other users from accessing the cached info, but it does start to create extra details to handle if you cache something you want to be tied to a particular session.)
There is no crosstalk. Calling the same cached function with the same parameters will always return (maybe a copy of) the same object, regardless the session.