Как мне справиться с таймаутами при использовании 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