2

ruby gem curbのcurlを使用して、マルチスレッド環境でマルチURLをフェッチしますが、「無効なイージーハンドル」例外がスローされますが、シングルスレッド環境で1つずつ実行すると、すべて問題ありません。

module Http
  @@curl = Curl::Easy.new
  @@curl.timeout = 10 #second
  @@curl.follow_location = true
  @@curl.max_redirects = 3
  @@options = Robot::HttpOptions.new

  def self.fetch(url, options=@@options, type=Robot::Type::HTML)
    @@curl.url = URI.unescape(url)==url ? URI.escape(url) : url
    @@curl.headers["User-Agent"] = options.user_agent
    begin
      @@curl.perform
    rescue Curl::Err::CurlError
      raise
    end
  end
end

self.fetchはマルチスレッド環境で呼び出されます。

誰かが私を助けてくれますか?ありがとうございました。

4

1 に答える 1

2

cURLのドキュメントから:

複数のスレッドで同じハンドルを共有してはなりません。

于 2011-03-06T17:51:44.190 に答える