Faraday: рдУрдкрди рдФрд░ рд░реАрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЕрдЧре░ 2017  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдлреИрд░рд╛рдбреЗ/рдПрдбрд╛рдкреНрдЯрд░/рд░реИрдХ.рдЖрд░рдмреА рдореЗрдВ, рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдУрдкрди рдФрд░ рд░реАрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

timeout  = env[:request][:timeout] || env[:request][:open_timeout]
response = if timeout
  Timer.timeout(timeout, Faraday::Error::TimeoutError) { execute_request(env, rack_env) }
else ... end

https://stackoverflow.com/questions/10322283/what-is-timeout-and-open-timeout-in-faraday рдХреЗ рдЕрдиреБрд╕рд╛рд░, open_timeout tcp рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдЗрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдЕрдкрд╡рд╛рдж рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рддрдм рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреНрдпрд╛ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдФрд░ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рд░рд┐рд╕реНрдкреЙрдиреНрд╕рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдЬреИрд╕реЗ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

feature help wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @coberlin рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд░рддрд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ OpenTimeoutError рдФрд░ ResponseTimeoutError рдХреЛ TimeoutError рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ rescue s рдЕрдкреЗрдХреНрд╖рд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗред
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд╛рдпрдХ рд╣реИ ЁЯШГ

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @coberlin рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд░рддрд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ OpenTimeoutError рдФрд░ ResponseTimeoutError рдХреЛ TimeoutError рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ rescue s рдЕрдкреЗрдХреНрд╖рд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗред
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд╛рдпрдХ рд╣реИ ЁЯШГ

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд░реИрдХ_рдПрдбрд╛рдкреНрдЯрд░ рдЧрд▓рдд рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реИрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдУрдкрди рдФрд░ рд░реАрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмреАрдЪ рдЬрд░реВрд░реА рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ HTTPClient рдПрдбреЗрдкреНрдЯрд░ рдпрд╛ рдЕрдиреНрдп рдПрдбреЗрдкреНрдЯрд░ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреА? рдПрдбреЗрдкреНрдЯрд░/httpclient.rb рд╕реЗ:

    @app.call env
  rescue ::HTTPClient::TimeoutError, Errno::ETIMEDOUT
    raise Faraday::Error::TimeoutError, $!
  rescue ::HTTPClient::BadResponseError => err
    if err.message.include?('status 407')
      raise Faraday::Error::ConnectionFailed, %{407 "Proxy Authentication Required "}
    else
      raise Faraday::Error::ClientError, $!
    end
  rescue Errno::ECONNREFUSED, IOError, SocketError
    raise Faraday::Error::ConnectionFailed, $!
  rescue => err
    if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err
      raise Faraday::SSLError, err
    else
      raise
    end

::HTTPClient::TimeoutError рдореЗрдВ 3 рдЙрдкрд╡рд░реНрдЧ рд╣реИрдВ ConnectTimeoutError,ReceiveTimeoutError, SendTimeoutError, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ http://www.rubydoc.info/gems/httpclient/2.1.5.2/HTTPClient/TimeoutError

рдлреИрд░рд╛рдбреЗ рдореЗрдВ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдлрд▓ рд╣реИред рдХреНрдпрд╛ рдпрд╣ ConnectTimeoutError рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ? рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдХреЛ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рд░рд┐рд╕реАрд╡рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдФрд░ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рд╕реЗрдВрдбрдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рдореЗрдВ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлреИрд░рд╛рдбреЗ рдореЗрдВ рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдлрд▓ рд╣реИред рдХреНрдпрд╛ рдпрд╣ ConnectTimeoutError рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ?

рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдо рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрдХрдбрд╝рдиреЗ рд░рд╣реЗ рд╣реИрдВ Faraday::Error::TimeoutError рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ ConnectionFailed рд╣реЛрдЧрд╛ рдмреНрд░реЗрдХ рдЙрди рдорд╛рдорд▓реЛрдВред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЬреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ Faraday::Error::TimeoutError рд▓рд┐рдП 2 рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдирд╛рдо рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:

  • рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐
  • рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рд░реАрдбрдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐

рдЕрдЧрд▓рд╛ рдХрджрдо рдкреНрд░рддреНрдпреЗрдХ рдПрдбреЗрдкреНрдЯрд░ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдПрдбреЗрдкреНрдЯрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдореИрдк рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕реЗ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП:

  • HTTPClient::ConnectTimeoutError ==> рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: OpenTimeoutError
  • HTTPClient::ReceiveTimeoutError ==> рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: ReadTimeoutError
  • HTTP рдХреНрд▓рд╛рдЗрдВрдЯ :: рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ ==> рдлреИрд░рд╛рдбреЗ :: рддреНрд░реБрдЯрд┐ :: рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ (рдпрд╣ рд╕реЗрдВрдбрдЯрд╛рдЗрдордЖрдЙрдЯ рдПрд░рд░ рднреА рдкрдХрдбрд╝ рд▓реЗрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлреИрд░рд╛рдбреЗ рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдореИрдкрд┐рдВрдЧ рд╣реИ)

рдЕрдВрдд рдореЗрдВ, рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП :)

рд╣реЗ рд▓реЛрдЧреЛрдВред

рд╣рдордиреЗ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдХреА рдереА (https://github.com/lostisland/faraday/pull/324)ред

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдФрд░ рдХреЛрд╢рд┐рд╢ рджреЗ рд░рд╣рд╛ рд╣реВрдВ (https://github.com/mistersourcerer/faraday/tree/718_mrsrcr_timeout-wrapping-2nd-chance), рдЬреИрд╕реЗ рд╣реА рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рд╣реЛрдЧреА, рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдПрдХ рдирдпрд╛ рдкреАрдЖрд░ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдирдорд╕реНрддреЗ @mistersourcerer , рдХреБрд╣рдиреА
рдореИрдВ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреАрдЖрд░ рдХреЛ рдмрдВрдж рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рд╕реА рддрд░рд╣ рдЕрдВрдд рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рд╣реИ
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рдо рд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣рдЬ рд╣реИрдВ (рднрд▓реЗ рд╣реА рд╣рдо 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВ!)
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ OpenTimeoutError рдФрд░ ReadTimeoutError рдкрд░ рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдЕрдкрдирд╛ рд╕рдордп рд▓реЗрдВ рдФрд░ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓реЗрдВ

рдЕрд░реЗ @iMacTiaред

рдЕрдЧрд░ рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рд╕рдордп рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░ рдкрд╛рдП рдереЗред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпреЛрдВред
рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдерд╛ рдЬреЛ рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдмреАрдЪ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрд╕ рд╕рдордп рдореЗрд░рд╛ рдХреЛрдб рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╡реИрд╕реЗ рднреА, рд╣рд╛рд╣рд╛ рдХреЗ рдХреБрдЫ рд╕рд╛рд▓ рдмрд╛рдж рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдЕрднреА, _EMSynchrony_ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЯреНрд░реИрд╡рд┐рд╕ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдореИрдВ рдПрдХ "рд╢реБрд░реБрдЖрддреА" рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рдкрд░ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХреЗрдВред

рдФрд░ рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╛рд░ред

рдзрдиреНрдпрд╡рд╛рдж @mistersourcerer!

рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдкреБрди: рдХрд░реЗрдВ: рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ @mislav рдиреЗ рдЕрдВрддрддрдГ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛: https://github.com/lostisland/faraday/commit/f73d13ee09814fa68b37efa7bddafa47331948c2

рддреЛ рдЖрдирдиреНрджрд┐рдд рд╣реЛрдВ, Errno::ETIMEDOUT рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Faraday::Error::TimeoutError рддрд╣рдд рдЕрдзрд┐рдХрд╛рдВрд╢ (рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ) рдПрдбреЗрдкреНрдЯрд░ рдкрд░ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИ

рдЗрд╕ @mistersourcerer рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣рд╛рдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ 2 рдирдП рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: OpenConnectionError < ConnectionError Net::HTTP рдХреЗ рд▓рд┐рдП рдФрд░ OpenTimeoutError < TimeoutError HttpClient рдХреЗ рд▓рд┐рдП?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЗрдХрд░ рдХреБрдЫ рднреНрд░рдо рд╣реИред
рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ "рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ" рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ ConnectionFailed рд░реВрдк рдореЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП #438 рдкрд░ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрдХреАрдирди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд┐рд░реНрдгрдп рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЙрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред
рдЕрдм, рдпрд╣ рди рдХреЗрд╡рд▓ рд░реИрдХ рдПрдбреЗрдкреНрдЯрд░ рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╢рд╛рдпрдж рд╕реБрд╕рдВрдЧрдд рднреА рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЙрдиреНрд╣реЗрдВ v1.0 рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ред

рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЕрдиреБрд╡рд░реНрддреАред

рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ Faraday::ConnectionFailed рддреНрд░реБрдЯрд┐ рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╣рдо рд░реАрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП Faraday::TimeoutError рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдбреЗрдкреНрдЯрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдкреВрд░реНрд╡ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП Faraday::TimeoutError рд╣реЛрдиреЗ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЦреБрд▓реЗ рдФрд░ рдмрдВрдж рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдЙрдк-рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде)ред

рдПрдХ рддрд░рдл рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдХрд░реАрдм рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред
рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ ConnectionFailed рд╡рд╛рдкрд╕ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдХреЙрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╢рд╛рдпрдж рд╕рд░реНрд╡рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛, рдпрд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реБрдЖред
рдЕрдЧрд░ рдореБрдЭреЗ TimeoutError рд╡рд╛рдкрд╕ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ рд╣реЛред рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдореИрдВ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ TimeoutError рдЙрдк-рд╢реНрд░реЗрдгреА рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдбреЛрдореЗрди рдХреЗ рддрд╣рдд рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ (рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ) рд▓реЗрдирд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЦреБрд▓рд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдерд╛ рдпрд╛ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд?

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

  1. рддрдп рдХрд░реЗрдВ рдХрд┐ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдмрдмрд▓-рдЕрдк рдХреИрд╕реЗ рдХрд░реЗрдВ
  2. рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреАрдХреГрдд рдХрд░реЗрдВ

@coberlin @erik-escobedo @mislav @mistersourcerer рдЙрдкрд░реЛрдХреНрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реБрдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП ConnectionFailed рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рдореИрдВ рдЬреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдПрдбреЗрдкреНрдЯрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ Net::HTTP рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди HTTPClient рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, ConnectTimeoutErrors TimeoutError рдХреЗ рдмрдЬрд╛рдп ConnectionFailed рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рдеред

рдпрд╣ рдареАрдХ рд╣реИ, рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рддрдп рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ (v1.0 рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд┐рдЫрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рд╣реЛрдЧрд╛)

рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЛ рд░рд┐рдВрдЧ рдореЗрдВ рдлреЗрдВрдХрдирд╛:

рдХрд╛рдо рдкрд░ рд╣рдо Nginx + Kubernetes рдХреЗ рдХрд╛рд░рдг рд╣реИрдВрдЧрд┐рдВрдЧ рдкреЙрдбреНрд╕ (рдпрд╛ рдХреБрдЫ рдФрд░) рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВред рд╡реИрд╕реЗ рднреА, рдиреЗрдЯрдПрдЪрдЯреАрдЯреАрдкреА рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рдФрд░ рд░реАрдбрдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлреЗрдВрдХрддрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдерд╛ рдЬреЛ рдХрд┐ рдерд╛ред

рдЕрдм рд╣рдо рдЯрд╛рдЗрдлрд┐рдпрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрдХ рд╕рд╛рде рдордВрдЧ рдЧрдП рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдмрддрд╛рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ nginx + рдХреБрдмреЗрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рдо рдЕрднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХ рддреЗрдЬреА рд╕реЗ рд╕рдВрдШрд░реНрд╖рд░рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдкреНрд░рдгрд╛рд▓реАред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рдо рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЗрд╡рд▓ Faraday::OpenTimeoutError рдЬреЛрдбрд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Faraday::OpenTimeoutError рдФрд░ Faraday::ReadTimeoutError Faraday::TimeoutError IMO рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@philsturgeon рдФрд░ рдЕрдиреНрдп рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛, рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреА?

рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ -> Faraday::ConnectionFailed
рд╕рдордпрдмрд╛рд╣реНрдп рдкрдврд╝реЗрдВ -> Faraday::TimeoutError

рдпрд╣ рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╛рдиреА рдЯрд╛рдЗрдлрд┐рдпрд╕)

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред

рдХрдиреЗрдХреНрд╢рдирдлреЗрд▓ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ "рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреИрд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ", рдЬреИрд╕реЗ рдЕрдорд╛рдиреНрдп DNS/IP рдЗрддреНрдпрд╛рджрд┐ред

рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИ "рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдХрд╣рд╛рдВ рд╣реИ, рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ"

рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИ "рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдХрд╣рд╛рдВ рд╣реИ, рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ"

рдореИрдВ рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛:

рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ: рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ (рдиреЛрдЯ: рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рдпрд╛ рдЕрднреА рддрдХ "рдЦреЛрд▓рд╛ рдЧрдпрд╛")ред
рдЯрд╛рдЗрдордЖрдЙрдЯ рдкрдврд╝реЗрдВ: рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЖрдЙрдЯрдкреБрдЯ рдкрдврд╝рдирд╛)ред

рдПрдХ рджреЛрд╖рдкреВрд░реНрдг рдлрд╝рд╛рдпрд░рд╡реЙрд▓/рдкреНрд░реЙрдХреНрд╕реА/рд▓реЛрдб_рдмреИрд▓реЗрдВрд╕рд░ рдЗрд╕ рдмрд╛рдд рдХреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЕрднреА рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП "рдХрдиреЗрдХреНрд╢рдирдлреЗрд▓" рдХрд╛ рд╕реАрдзрд╛ рд╕рд╛ рдЕрд░реНрде рд╣реИ: рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ред рдФрд░ рдпрд╣ рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред

рддреБрдо рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреИрд░рд╛рдбреЗ :: OpenTimeoutError рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗ рдХрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ ConnectionFailed рдмрдЬрд╛рдп TimeoutError , рд▓реЗрдХрд┐рди рдореИрдВ рдФрд░ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдирд╣реАрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдХреГрдкрдпрд╛ рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ https://github.com/lostisland/faraday/issues/718#issuecomment -343957963 рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд┐рдХрд▓рддрд╛ рд╣реИ? рдореИрдВ рдПрдХ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ

рдореИрдВ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддрд╛ рд╣реВрдВред

рдЖрдк рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЙрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдордп рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред "5s рдореЗрдВ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓" рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдордЭрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВред

рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдФрд░ рдЦреБрд▓реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рджреЛрдиреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рдкрдарди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдмреИрдХ рдСрдл рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд╣рдо рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдкрдврд╝рдиреЗ рдкрд░ рдмрд╣рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рднреА рдЙрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдмрд╛рдд рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рднреА рдХрд╣рд╛ рдерд╛: рдпрджрд┐ рдЖрдкрдХреЛ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ рдПрдХ рдкрдарди рдЯрд╛рдЗрдордЖрдЙрдЯ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдкреВрд░реА рддрд░рд╣ рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ)ред рд╕рдВрдпреЛрдЧ рд╕реЗ, рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдПрдХ рдЕрд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ред

рдЖрдЬ рд▓реЛрдЧ ConnectionFailed рдФрд░ TimeoutError рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХреЗ рддрд░реНрдХ рд╢рд╛рдпрдж рд╡рд╣реА рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ред рдпрджрд┐ рд╣рдо рдирдП рдЕрдкрд╡рд╛рдж рдХреЛ ConnectionFailed рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ (рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ) рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдореИрдВ рдПрдХ рдЕрд░реНрдердкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ (рдФрд░ рд╕рд╣рдордд рд╣реВрдВ) рд╣рд╛рд▓рд╛рдВрдХрд┐ рдУрдкрдирдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИред

рд▓реЗрдХрд┐рди рд╣реЗ, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ ConnectionTimedOut рд╣реИрдВ?

open_timeout: X рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреНрд░рдо рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ ConnectionTimedOut рдлреЗрдВрдХрдиреЗ рддрдХ рдХрд┐рддрдирд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реИред

рдЕрдЪреНрдЫреА рдмрд╛рдд

рдЗрд╕реЗ ConnectionOpenTimeout ? рдпрд╣ рдЗрд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордпрдмрд╛рд╣реНрдп рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╛рдо "рдПрдХреНрд╕ рд╕реЗрдХреЗрдВрдб рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓" рдЕрд░реНрде рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдХреБрдЫ рд▓реЛрдЧ рдЕрднреА рднреА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдВ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдореИрдВ

рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ !

@iMacTia рдЕрд░реЗ, рдЕрдЧрд░ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @philsturgeon , рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдкреБрдирд░реНрдХрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:

  1. рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ v1.0 рд╢рд╛рдЦрд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдЕрд╕рдВрдЧрдд рд╣реЛрдВрдЧреЗ)ред
  2. рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреНрд░рдмрдВрдзрди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдбреЗрдкреНрдЯрд░ рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  3. рд╕рд╣рдордд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
  4. рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ ConnectionOpenTimeout рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ рдЬреЛ ConnectionFailed рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рд╣реЛрдЧреАред
  5. рд░реАрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо TimeoutError рдмрдврд╝рд╛рдПрдВрдЧреЗред

рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛?

рдХреНрдпрд╛ ConnectionOpenTimeout рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлреИрд░рд╛рдбреЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ :: рдЕрдиреБрд░реЛрдз :: рд╣реИрдВрдбрд▓ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ?

@mjhoy рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдХрдиреЗрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ

рд╣рд╛рд▓рд╛рдВрдХрд┐, Faraday::Request::Retry рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдЖрдкрдХреЛ ConnectionOpenTimeout рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ ConnectionFailed рдХреЛ рдЙрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдХреБрдЫ рдФрд░ "рд╕рдореБрджрд╛рдп рдХреА рд░рд╛рдп" рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рд╣рдо рдХрднреА-рдХрднреА рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рде OpenTimeout рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдпрд╣ рдКрдкрд░ рдЖрдкрдХреЗ Errno::ETIMEDOUT, Timeout::Error, Error::TimeoutError , рдФрд░ Net::OpenTimeout рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ Timeout::Error ; рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдлреИрд░рд╛рдбреЗ рдЙрдирдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред рддреЛ рд╢рд╛рдпрдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рд╛рдБ, рд╣рдордиреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ; рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

@mjhoy рдЖрдк рдпрд╣ рдХрд╣рдиреЗ рдореЗрдВ рд╕рд╣реА рд╣реИрдВ рдХрд┐ Timeout::Error рдореЗрдВ Net::OpenTimeout рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдУрдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рднреА рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдбреЗрдкреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ Timeout::Error рдмрдЪрд╛рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХреА рд╕реВрдЪреА рдореЗрдВ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдпрд╛ рд╕рд┐рд░реНрдл рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддреА рд╣реИред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд░ рд▓реЗрдВрдЧреЗ, рддреЛ Net::OpenTimeout рдХреЛ рдПрдХ рдирдП рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рд╛ рдерд╛, рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рдЕрдм рднреА рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдЕрд░реЗ, рдЦреЗрдж рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЯреАрдореЛрдВ рдХреЗ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдкрдбрд╝рд╛ рд░рд╣рд╛ рдФрд░ рдЕрдм рд╣рдорд╛рд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдиреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

@iMacTia рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рдЗрд╕реЗ v2.0 рдХреЗ рд▓рд┐рдП рд▓реЗрдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдп @ ragav0102 , рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА v1.0 рдХреЛ рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдкрд░ рдЬреЛрд░ рджреЗ рд░рд╣реЗ рд╣реИрдВред

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ v2.0 рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣реАрдиреЛрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдкрдбрд╝ рд╕рдХрддреА рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрднреА-рдЕрднреА рдЙрддреНрддреАрд░реНрдг рд╣реБрдП рд╣реИрдВ рдФрд░ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк v1.0 рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреБрдЫ рдЪреБрдиреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрдж рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рд╕рдордЭ рдЧрдпрд╛!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ryanbyon picture ryanbyon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mokolabs picture mokolabs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

subvertallchris picture subvertallchris  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Lewiscowles1986 picture Lewiscowles1986  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattmill30 picture mattmill30  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ