Hi I just found this thread... I've gone ahead and filed an issue with a suggested fix for the gaeutilities project on github. I'm pretty behind on getting stuff in for that project, I'm not using appengine a lot at the moment. I'll try to get to it when i can, of if someone is feeling fiesty enough to provide a patch I'd be happy to apply it.
http://github.com/joerussbowman/gaeutilities/issues/issue/13 On Mar 8, 11:25 am, Sümer Cip <[email protected]> wrote: > Of course this approach is only valid if I can guarantee no subsequent put() > operations will happen in a single request which in my case unlikely. Or is > there a better generic approach you can suggest? > > > > > > On Mon, Mar 8, 2010 at 4:09 PM, Sümer Cip <[email protected]> wrote: > > Yes, exactly, I finally found the problem yesterday, gaeutlities session > > behaves different on each object. So how about this solution: I have a base > > handler class for all the handlers and what I added is to refresh the user > > param from the datastore for every __init__ function. How that sounds? > > > class scRequestHandler(webapp.RequestHandler): > > def __init__(self): > > webapp.RequestHandler.__init__(self) > > self.Session = scSession() > > # reload the user object, this is because the refeernce property in > > the Session > > # object is somehow pickled and the put() operation does not update > > the real entity. > > # even though they have the same keys(). > > # The solution is to get the user from DS for every request. > > if self.Session.user: > > self.Session.user = db.get(self.Session.user.key()) > > > On Mon, Mar 8, 2010 at 2:55 PM, Nick Johnson (Google) < > > [email protected]> wrote: > > >> Hi Sumer, > > >> You're storing an entity in the session, and unless the gaeutilities > >> session object handles this specially, this results in it pickling the > >> 'user' entity and storing it in the session. Calling .put() on the user > >> object will update the datastore with the new value, but won't change the > >> pickled value the session object is storing. Next request, it will > >> deserialize the same data it did previously, with no update. > > >> -Nick Johnson > > >> On Sat, Mar 6, 2010 at 2:22 PM, Sumer Cip <[email protected]> wrote: > > >>> Hi all, > > >>> Below is the code code I am using in my tests to update a reference > >>> tied to my session, the session object I use if from gaeutilities > >>> (wrapped it a little). I put a reference object in the session and all > >>> working fine. > > >>> if not self.Session.user: > >>> user = scMember.all().filter("name = ", > >>> "testmember").get() > >>> self.Session.user = user > >>> else: > >>> self.Session.user.playcount += 1 > >>> self.Session.user.put() > > >>> The problem with this code is the put() is not working, if I do not > >>> restart app engine SDK. In the error scenario, user is set into the > >>> session object, and in the second request I can update the playcount > >>> only once. BUt the subsequent operations fail without any notice of > >>> error and playcount stays "1" everytime even I have incremented it. > >>> This is the testhandler and there is no other code running paralelly. > >>> When I restart the SDK, the problem goes away, it works fine. > >>> So, I am not sure if I am doing something wrong, it took me 6 hours to > >>> identify this thing. > > >>> Any help will be appericiated. > > >>> Thanks, > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "Google App Engine" group. > >>> To post to this group, send email to [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]<google-appengine%2Bunsubscrib > >>> [email protected]> > >>> . > >>> For more options, visit this group at > >>>http://groups.google.com/group/google-appengine?hl=en. > > >> -- > >> Nick Johnson, Developer Programs Engineer, App Engine > >> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: > >> 368047 > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Google App Engine" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]<google-appengine%2Bunsubscrib > >> [email protected]> > >> . > >> For more options, visit this group at > >>http://groups.google.com/group/google-appengine?hl=en. > > > -- > > Sumer Cip > > -- > Sumer Cip -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
