簡體   English   中英

使用http.get和迭代器導致的em-synchrony無法在根光纖中產生錯誤

[英]em-synchrony using http.get and iterators causing can't yield in root Fiber error

一個非常簡單的例子,我得到根光纖錯誤。

require 'em-synchrony'
require 'em-synchrony/em-http'

urls = %w{http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com}
EM.synchrony do

  EM::Synchrony::Iterator.new(urls, 2).each(
      proc { |url, iter|

        EM::HttpRequest.new(url).get
        iter.next
      }
  )
end

我可以在這里使用async,但不能使用同步http請求。

看起來如果我要使用同步獲取請求,我應該使用FiberIterator。

require 'em-synchrony'
require 'em-synchrony/em-http'
require "em-synchrony/fiber_iterator"

urls = %w{http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com}
EM.synchrony do


  EM::Synchrony::FiberIterator.new(urls, 2).each(
      proc { |url|

        EM::HttpRequest.new(url).get

      }
  )
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM