在开始之前,是的,我知道使用Ruby的Timeout是一个可怕的想法。但这更多是一个思想实验。
比方说,我有一些Ruby代码包装在Timeout::timeout
块中,该块完成了SELECT
,UPDATE
和{{1 } s。鉴于INSERT
的性质,我们可以在准备或等待SQL事务完成时中止操作。
理论上,如果在Ruby超时中断之前向DB发送请求,则事务将在DB上完成,但客户端将无法响应该完成。当然,根据Ruby代码的上下文,如果需要后续交易才能使我的模型被认为是完整和稳定的,则数据最终可能是不完整的,以及由于代码未完全完成而造成的其他可能的副作用
还有其他可能的危险或副作用吗?交易是否有可能以其他方式挂起或失败?还是关于数据和应用程序需要说的上下文级别知识太多了?