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) < nick.john...@google.com> 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 <sum...@gmail.com> 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 google-appeng...@googlegroups.com. >> To unsubscribe from this group, send email to >> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> >> . >> 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 google-appeng...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > -- 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 google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.