Ruby:使用openuri 发送http请求超时
伊谢尔伦
伊谢尔伦 2017-04-22 08:56:03
0
2
611

在官方文档看了下,好像openuri默认不支持timeout吧?
http://www.ruby-doc.org/stdlib-2.1.1/libdoc/open-uri/rdoc/OpenURI.html

如果不能设置timeout的话,有替代品吗?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(2)
左手右手慢动作

https://github.com/lostisland/faraday

conn.get do |req|
  req.url '/search'
  req.options.timeout = 5           # open/read timeout in seconds
  req.options.open_timeout = 2      # connection open timeout in seconds
end
Peter_Zhu

Pas besoin de vous embêter, utilisez simplement Net::HTTP

uri=URI(query_uri)
Net::HTTP.get(uri,:read_timeout=>30)

Voici l'introduction du document :

open_timeout[RW]
Nombre de secondes à attendre pour l'ouverture de la connexion. N'importe quel nombre peut être utilisé, y compris les nombres flottants pour des fractions de secondes. Si l'objet HTTP ne peut pas ouvrir une connexion pendant ce nombre de secondes, il déclenche une exception Net::OpenTimeout. .

Laissez-moi le traduire d'ailleurs :

open_timeout
Définissez le temps d'attente maximum lors de l'ouverture d'une connexion. Sa valeur peut être n'importe quel nombre, y compris de très petits nombres à virgule flottante. Si le tableau connecté ne peut pas être ouvert dans le délai défini, une exception Net::OpenTimeout sera levée. La valeur par défaut est nulle, ce qui signifie qu'il n'y a aucune limite de temps.
Cela limitera la demande à compléter dans un délai de 30 secondes.

Il existe également de nombreuses autres fonctions, telles que la configuration de serveurs proxy, de certificats CA, de certificats SSL, etc.
Vous pouvez vous référer à la documentation pour plus de détails, je n'entrerai donc pas dans les détails ici.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal