Appengine 1.7.4,webapp2,session。
# Some object
def post(self):
logging.error(self.session.get('cart')) #A 1 item
if '_put' in self.request.params:
return self.put()
cart = self.session.get('cart')
# add one item to cart
self.session['cart'] = cart
logging.error(self.session.get('cart')) #B OK, 2 items
return self.redirect(URL)
def put(self):
logging.error(self.session.get('cart')) #C 1 item?!
# some code
return self.redirect(URL)
AJAX发送两个POST请求。
First without _put
- #A - returns 1 item - OK.
- #B - returns 2 items - OK.
Second, POST with _put.
- #A - returns 1 item - why? session was changed?
- #C - as above
请求逐个执行(用户单击一次,两个请求)。有什么想法可能会发生这种情况吗?
如果我只运行第一个请求(没有_put)和刷新页面 - 会话保存正确。
从webapp(1.x)和Python 2.5迁移后出现问题。
感谢您的任何建议。
答案 0 :(得分:0)
这两个请求之间有多长时间?不到1或2秒?那么你可能会遇到竞争条件:
==>来自要求的变化1丢失了。请注意(由于appengine的分布式架构)" save"在>>请求本身完成后,甚至可以发生!