如何在Ruby中的RestClient gem中设置超时?

sra*_*mar 37 ruby timeout rest-client

我通过它来调用服务器来使用RestClient gem.问题是如何从客户端设置超时.

RestClient.get "http://127.0.0.1:7819/tokenize/word/stackoverflow"
Run Code Online (Sandbox Code Playgroud)

我想把它设置为10秒.

提前致谢!!

Hug*_*res 59

你不需要修补任何东西.您可以RestClient::Request直接使用,例如:

RestClient::Request.execute(:method => :get, :url => url, :timeout => 10, :open_timeout => 10)
Run Code Online (Sandbox Code Playgroud)

但请记住,最糟糕的情况是20秒.

检查其他帖子的答案/sf/answers/381179501/

  • 这应该是答案 - 我担心我必须断言猴子补丁是邪恶的,因为他们有意想不到的副作用. (2认同)
  • nit:如果这两个值相同,则不必指定timeout和open_timeout.超时值将用于read_timeout和open_timeout.https://github.com/rest-client/rest-client/blob/10d3599745a134fa69eccc2f16f6e70133a3bb6c/lib/restclient/request.rb#L130 (2认同)