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.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/abca3930-31e5-4de2-8200-1ddab80b8734o%40googlegroups.com.
No comments:
Post a Comment