gpt4 book ai didi

ruby-on-rails - TimeOut 与事务 block rails

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:31 26 4
gpt4 key购买 nike

据我了解,如果我们在此交易中有任何代码,并且当它发生任何错误时(保存!,...)在该 block 中,整个代码将恢复,这里的问题是是否有任何超时( rack timeout = 12) 发生在这个 block 中。

def create
ActiveRecord::Base.transaction do
// timeout happens
end
end

Rack::Timeout 发生时,我们如何使用事务回滚代码?

最佳答案

当发生 Rack 超时时,任何正在进行的事务都将被回滚,但是已经提交的事务当然会保持提交状态。您不必为此担心。

一旦启动数据库事务,它最终将被提交回滚。这是结束交易的仅有的两种可能性。当您提交事务时,您是在说无论接下来发生什么,您都希望保存这些更改。如果您不提交事务,一旦进入事务无法继续的任何状态(例如网络连接断开),数据库将自动回滚事务。

ActiveRecordActiveRecord::Base.transaction do block 正常退出时自动提交事务。异常退出可能会导致 ActiveRecord 向数据库发出 ROLLBACK 命令,这是一种高效且良好的做法,可以将连接返回到就绪状态,但这并不是绝对必要的,因为除非显式提交事务,否则数据库最终会自动将其回滚。

关于ruby-on-rails - TimeOut 与事务 block rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43891101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com