Как мне справиться с таймаутами при использовании ActiveMerchant?

Иногда при локальной разработке мое соединение обрывается, и, надеюсь, этого не должно произойти в производственной среде, возникает проблема, заключающаяся в том, что мне, вероятно, следует обрабатывать тайм-ауты из ActiveMerchant, когда он выходит на платежный шлюз, в моем случае - в SagePay.

Я не вижу способа в документации сделать это, мне было интересно, есть ли лучший способ справиться с этим?

1 ответ

Я считаю, что вопрос связан с реализацией AM в ruby ​​(поправьте меня, если я ошибаюсь, пожалуйста).

ActiveMerchant повышения ActiveMerchant::ConnectionError когда происходит таймаут ( ссылка на источник). Поэтому мы можем просто обработать исключение. например:

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

Также иногда бывает полезно контролировать время ожидания, используя open_timeout а также read_timeout атрибуты класса ( ссылка на источник), в случае SagePay:

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
Другие вопросы по тегам