Friday, May 10, 2013

detecting stale session data

Hi,

I'm pretty new to Django and am having a problem with a race conditions while modifying my session data. I'm using the standard session backend in Django 1.4.1,, backed by Mysql.

I have view A, which can take a long time to process, and view B, which is usually faster. I store multiple data fields, fieldA and fieldB, in the session dictionary. View A modifies fieldA, and view B modifies fieldB.

Sometimes, view A starts up with a copy of the session data as it exists at t1. Then, while it's processing, view B starts up. It completes quickly, modifying fieldB in the session data at time t2. Then view A finally completes, modifying its field in the session data at time t3. But what I wind up with is fieldA at time t3 and fieldB at time t1. In other words, when view A completes its write, it's storing the stale version of fieldB that it read when it started. What I want in that situation is t3's version of fieldA and t2's version of fieldB.

My questions: (1) is there a way to check if your copy of the session dictionary is stale? And if so, is there a way to do it atomically? (2) Is there a way to selectively write just part of the session data, instead of the whole thing? (3)  Or, is there a better solution besides either of these ideas?

The only thing I can think of using RAM memory to keep track of a last_write timestamp for each session -- but that's not a scalable solution. Is there a better way?

Thanks in advance,

Spork

--
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 post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate