使用ActiveMerchant时如何处理超时?

时间:2013-11-13 17:18:31

标签: timeout activemerchant

有时在本地开发时我的连接会丢失,虽然这有希望不会在生产中发生,但它会引发一个问题,我应该处理从ActiveMerchant到支付网关的超时时间,在我的情况下是SagePay。

我无法在文档中看到这样做的方法,我想知道是否有最佳实践方法来处理这个问题?

1 个答案:

答案 0 :(得分:0)

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

超时发生时,{p> ActiveMerchant会引发ActiveMerchant::ConnectionErrorlink to source)。因此我们可以简单地处理异常。 e.g:

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