Thanks for the advice it appears that the issue was related to the old
transaction sticking around.

I put:
@transaction.commit_on_success

On top of the method and it looks like I'm no longer getting stale data;
guess I'll have to go do this around all data retrieval methods.  I was
assuming I needed this on the methods that changed data but didn't realize
it would make a difference on methods that do reads in other threads.

Thanks,

Jared


2010/4/28 Tomasz Zieliński <tomasz.zielin...@pyconsultant.eu>

>
>
> On 28 Kwi, 22:04, Jared Smith <jaredtsm...@gmail.com> wrote:
> > Using Django DB API I have two threads one that increments a counter
> getting
> > stored to the database and then another thread that is reading this
> counter.
> >
> > T1(Thread 1) increments
> > T2(Thread 2) reads
> >
> > I have found that if I increment and store the counter value in T1 and
> then
> > if I fetch it in the same thread I get the correct answer for the
> counter.
> > The fetched number matches what I store.
> >
> > However I notice that if T2 reads after T1 stores the value there is some
> > lag where it gives the wrong answer even though T1 is able to
> successfully
> > read the value with the same exact method.  I put a loop spinning reading
> > this value and within a second or two it seems to get the right answer.
> >
> > Is there some lag for different threads to get the same results due to
> some
> > per thread caching happening under the covers?  Anyone know of a work
> around
> > to make sure this cache is flushed?  I'm worried I could get this problem
> > more generally since there are multiple threads accessing the DB and I
> need
> > to make all of them get the most recently committed value.
> >
> > Thank you for any advice,
> >
>
> I'm guessing that this is happening to you:
>
>
> http://stackoverflow.com/questions/2235318/how-do-i-deal-with-this-race-condition-in-django/2235624#2235624
>
> Note that you can also lower the isolation level to READ COMMITED (in
> case of MySQL)
> to get similar result, but READ COMMITED is allegedly (I read it
> somewhere) less used
> and therefore less tested that default REPEATABLE READ.
>
> --
> Tomasz Zielinski
> http://pyconsultant.eu
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to