Rumah  >  Soal Jawab  >  teks badan

Ruby:使用openuri 发送http请求超时

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

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

伊谢尔伦伊谢尔伦2712 hari yang lalu556

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-22 08:58:03

    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
    

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-22 08:58:03

    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.

    balas
    0
  • Batalbalas