如果从客户端到一个函数有两个或更多个发布请求,其中服务器更改一个实体,则第二个请求可以在第一次放入之前获取此实体。因此,当第二个请求放置实体时,它会重写第一个请求的更改。如何防止这种影响?
这里有一些例子(将元素添加到列表中):
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()
因此,如果两个帖子请求足够快,那么日志可能如下所示:
SomeHandler post
SomeHandler post
Putting entity
Putting entity
insted的
SomeHandler post
Putting entity
SomeHandler post
Putting entity
只会添加第二个元素。