Reputation: 3
If there are two or more post requests from client to one function, where server changes one entity, then second request can get this entity before first puts. And so, when second request puts entity, it rewrite changes from first request. How to prevent this effect?
Here some example (adding element to list):
class SomeHandler(webapp2.RequestHandler):
def post(self):
logging.info("SomeHandler post")
name = self.request.get("name")
element = self.request.get("element")
x = X.query(X.name == name).fetch(1)[0]
# some stuff, that takes time
x.list.append(element)
logging.info("Putting entity")
x.put()
So, if two post requests were fast enough, than logs might looks like this:
SomeHandler post
SomeHandler post
Putting entity
Putting entity
insted
SomeHandler post
Putting entity
SomeHandler post
Putting entity
And only second element will be added.
Upvotes: 0
Views: 83