【发布时间】:2012-11-29 09:45:15
【问题描述】:
我正在通过 Google App Engine 在 Web2Py 中制作房间预订系统。 当用户预订房间时,系统必须确保该房间确实可用并且之前没有其他人预订过。 为了确保我查询房间是否可用,然后我进行预订。问题是我怎样才能以一种“互斥”的方式进行交易,以确保这个房间真的是给这个用户的?
谢谢!! :)
【问题讨论】:
标签: python google-app-engine web2py
我正在通过 Google App Engine 在 Web2Py 中制作房间预订系统。 当用户预订房间时,系统必须确保该房间确实可用并且之前没有其他人预订过。 为了确保我查询房间是否可用,然后我进行预订。问题是我怎样才能以一种“互斥”的方式进行交易,以确保这个房间真的是给这个用户的?
谢谢!! :)
【问题讨论】:
标签: python google-app-engine web2py
互斥已经内置在 DBMS 中,所以我们只需要使用它即可。举个例子吧。
首先,您在模型中的表应该以这样一种方式定义,即您的房间号应该是唯一的(使用 UNIQUE 约束)。
当 User1 和 User2 都查询房间时,他们应该得到一个回复说房间是空的。当两个用户同时发送该房间的“BOOK”请求时,预订功能应直接将两个用户的“BOOK”请求插入数据库。但实际上只有一个会被执行(因为 UNIQUE 约束),另一个会产生 DAL 异常。捕获异常并响应“预订”请求不成功的用户,说您只是瞬间错过了这个房间:-)
希望这会有所帮助。
【讨论】: