阻止对 App Engine 数据存储区的并发访问
我正在 Google App Engine 上构建一个应用程序,该应用程序使用数据存储来存储有关服务器当前状态的信息。当 Android 设备查询服务器时,servlet 从数据存储中获取实体,修改它,然后将其放回到数据存储中以更新数据存储条目。
但是,有时,当 servlet 的一个实例已从数据存储区获取数据时,servlet 的另一个实例会在第一个实例将更新的数据放回之前执行相同的操作。这会导致我的应用程序出现同步问题。
有什么方法可以“锁定”数据存储,以便在释放锁之前没有任何操作可以对其进行操作?
谢谢。
I'm building an application on Google App Engine that uses the datastore to store information about the current state of the server. When an Android device queries the server, a servlet gets an Entity from the datastore, modifies it, and puts it back into the datastore to update the datastore entry.
However, sometimes while one instance of the servlet has gotten the data from the datastore, another instance of the servlet does the same before the first instance puts updated data back in. This is causing synchronization issues in my application.
Is there any way to "lock" the datastore so that nothing can operate on it until the lock is released?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
交易就是您所追求的。
不过,请仔细阅读文档:您在事务中可以执行的操作有严格的限制。具体来说,您只能在单个实体组内进行查询 - 即具有相同祖先的实体集。
Transactions are what you're after.
Read the docs carefully though: there are strict limitations on what you can do within a transaction. Specifically, you can only query within a single entity group - that is, the set of entities with the same ancestor.