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

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

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

伊谢尔伦
伊谢尔伦

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

membalas semua(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

Tak payah susah-susah, guna Net::HTTP

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

Ini ialah pengenalan dokumen:

buka_masa tamat[RW]
Bilangan saat untuk menunggu sambungan dibuka Sebarang nombor boleh digunakan, termasuk Terapung untuk saat pecahan Jika objek HTTP tidak dapat membuka sambungan dalam beberapa saat ini, ia menimbulkan pengecualian Net::OpenTimeout .

Biar saya menterjemahkannya dengan cara:

buka_masa tamat
Tetapkan masa menunggu maksimum apabila membuka sambungan. Nilainya boleh menjadi sebarang nombor, termasuk nombor titik terapung yang sangat kecil. Jika lukisan yang disambungkan tidak boleh dibuka dalam tempoh masa yang ditetapkan, pengecualian Net::OpenTimeout akan dilemparkan. Nilai lalai ialah sifar, yang bermaksud tiada had masa.
Ini akan mengehadkan permintaan untuk diselesaikan dalam masa 30 saat.

Terdapat juga banyak fungsi lain, seperti menetapkan pelayan proksi, sijil CA, sijil ssl, dll.
Anda boleh merujuk kepada dokumentasi untuk butiran, jadi saya tidak akan pergi ke butiran di sini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan