module HTTPX::Plugins::CircuitBreaker::OptionsMethods

  1. lib/httpx/plugins/circuit_breaker.rb

adds support for the following options:

:circuit_breaker_max_attempts

the number of attempts the circuit allows, before it is opened (defaults to 3).

:circuit_breaker_reset_attempts_in

the time a circuit stays open at most, before it resets (defaults to 60).

:circuit_breaker_break_on

callable defining an alternative rule for a response to break (i.e. ->(res) { res.status == 429 } )

:circuit_breaker_break_in

the time that must elapse before an open circuit can transit to the half-open state (defaults to <60).

:circuit_breaker_half_open_drip_rate

the rate of requests a circuit allows to be performed when in an half-open state (defaults to 1).

Public Instance methods

option_circuit_breaker_break_in(value)
[show source]
    # File lib/httpx/plugins/circuit_breaker.rb
120 def option_circuit_breaker_break_in(value)
121   timeout = Float(value)
122   raise TypeError, ":circuit_breaker_break_in must be positive" unless timeout.positive?
123 
124   timeout
125 end
option_circuit_breaker_break_on(value)
[show source]
    # File lib/httpx/plugins/circuit_breaker.rb
134 def option_circuit_breaker_break_on(value)
135   raise TypeError, ":circuit_breaker_break_on must be called with the response" unless value.respond_to?(:call)
136 
137   value
138 end
option_circuit_breaker_half_open_drip_rate(value)
[show source]
    # File lib/httpx/plugins/circuit_breaker.rb
127 def option_circuit_breaker_half_open_drip_rate(value)
128   ratio = Float(value)
129   raise TypeError, ":circuit_breaker_half_open_drip_rate must be a number between 0 and 1" unless (0..1).cover?(ratio)
130 
131   ratio
132 end
option_circuit_breaker_max_attempts(value)
[show source]
    # File lib/httpx/plugins/circuit_breaker.rb
106 def option_circuit_breaker_max_attempts(value)
107   attempts = Integer(value)
108   raise TypeError, ":circuit_breaker_max_attempts must be positive" unless attempts.positive?
109 
110   attempts
111 end
option_circuit_breaker_reset_attempts_in(value)
[show source]
    # File lib/httpx/plugins/circuit_breaker.rb
113 def option_circuit_breaker_reset_attempts_in(value)
114   timeout = Float(value)
115   raise TypeError, ":circuit_breaker_reset_attempts_in must be positive" unless timeout.positive?
116 
117   timeout
118 end