python - App Engine NDB 事务冲突

标签 python google-app-engine transactions

在 App Engine 文档 ( https://cloud.google.com/appengine/docs/python/ndb/transactions ) 中,它说:“如果事务与另一个事务‘冲突’,它将失败;NDB 会自动重试此类失败的事务几次。”

这句话的意思我不是很清楚。如果事务A先开始,然后事务B在A运行的中间开始,是否意味着A和B都会失败并重试?还是只有 B 失败,A 继续?

还有一个相关的问题:是否存在事务会部分完成然后回滚的情况?还是每个事务尝试在有机会完成功能之前根本不进入功能?

谢谢!

最佳答案

最有可能的是,其中一个交易会成功,而另一个交易会失败(并重试),但您无法提前判断是哪一个; 也有可能两者都可能失败(并分别重试)。

是的,失败通常意味着部分进展但随后回滚。这是一种“乐观并发”安排,而不是基于抢先式锁定的安排。

请记住,许多分布式机器上通常会请求可能存在冲突的事务——通过“乐观并发”(检测冲突并回滚无法完全完成的冲突)以外的任何方法来协调它们都是不可行的。

关于python - App Engine NDB 事务冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518260/

相关文章:

python - 如何使用 Python 在 Google Compute Engine 中打开特定端口,例如 9090

python - 使用特定值初始化特定形状的numpy数组

python - 当有选择地添加额外字段时更改模型表单的顺序?

java - HTML5 本地存储离线缓存在 Google AppEngine 应用程序中不起作用

python - Cron 作业无法使用 admin_required 装饰器访问 url

NHibernate - 在 Dispose() 方法中使用 Session.Flush() - 好主意吗?

python - 如何在不使用邪恶安装程序的情况下在 Windows 10 Pro 上安装 Python?

google-app-engine - 从 Google AppEngine 数据存储区删除数据

php - MYSQL事务问题,用PHP

PHP-Mysql事务