Hi Guys,
I am using sessions in my webapp, and don't want to use a db/file backends as my device
has small storage, so, using signed_cookies backend, I need to store and modify per-session data
across places and use the session_key to lookup, modify and then save. But every save creates a
new session, so, the change isn't propagated to other views.
func_view(request)
start_async_oper(func_non_view, args=request.session)
# session is created in another view
request.session.data = 1
func_view2(request):
check (request.session.data == 2)
func_non_view(session):
session = SessionStore(session_key=session.session_key)
session.data = 2
session.save()
Session_key is passed from view to non-view and then I am using Sessionstore(session_key) to
lookup the session from non-view, and then after modification normally do a save() and from the
view, I read updated session values.
This logic works if I use either a db/file backend.
Also confirmed this behavior by looking at the save() function of various backends.
If I just change the session data (not from a view), but don't do a save I can see that the session_key hasn't changed
but obviously the change isn't reflected.
The Django version is 1.11 (Default Ubuntu18.04, cannot update) but looks like the signed_cookies code hasn't changed.
Looks like a bug to me? am I missing anything? I can move the session update to a view and use some globals but
this design keeps it simple by storing the data in the session.
Any help is appreciated.
Thanks.