有时,在本地开发时,我的连接断开了,尽管希望这种连接不应该在生产中发生,但是这引起了一个问题,即我应该处理ActiveMerchant到支付网关(例如我的SagePay)的超时问题。

我在文档中看不到执行此操作的方法,我想知道是否有最佳实践来处理此问题?

最佳答案

我相信这个问题与AM的ruby实现有关(如果我错了,请纠正我)。

发生超时(link to source)时,ActiveMerchant会升高ActiveMerchant::ConnectionError。因此,我们可以简单地处理异常。例如。:

begin
  # Your ActiveMerchant staff here
rescue ActiveMerchant::ConnectionError => e
  # timeout handler
end


同样,有时在open_timeout的情况下使用read_timeoutSagePay类属性(link to source)控制超时可能很有用:

ActiveMerchant::SagePay.open_timeout = 5 # timeout for opening the connection is set to 5 seconds
ActiveMerchant::SagePay.read_timeout = 10 # timeout for reading from opened connection is set to 10

08-19 06:08