gpt4 book ai didi

ruby - 有没有更好的方法在 Ruby 中异步发出多个 HTTP 请求?

转载 作者:可可西里 更新时间:2023-11-01 17:10:43 25 4
gpt4 key购买 nike

我正尝试在 Ruby 中发出多个 HTTP 请求。我知道这可以很容易地在 NodeJS 中完成。我正在尝试使用线程在 Ruby 中完成它,但我不知道这是否是最好的方法。我没有成功运行大量请求(例如超过 50 个)。

require 'json'
require 'net/http'

urls = [
{"link" => "url1"},
{"link" => "url2"},
{"link" => "url3"}
]

urls.each_value do |thing|
Thread.new do
result = Net::HTTP.get(URI.parse(thing))
json_stuff = JSON::parse(result)
info = json["person"]["bio"]["info"]

thing["name"] = info
end
end

# Wait until threads are done.
while !urls.all? { |url| url.has_key? "name" }; end

puts urls

有什么想法吗?

最佳答案

代替您使用的 while 子句,您可以调用 Thread#join 使主线程等待其他线程。

threads = []
urls.each_value do |thing|
threads << Thread.new do
result = Net::HTTP.get(URI.parse(thing))
json_stuff = JSON::parse(result)
info = json["person"]["bio"]["info"]

thing["name"] = info
end
end

# Wait until threads are done.
threads.each { |aThread| aThread.join }

关于ruby - 有没有更好的方法在 Ruby 中异步发出多个 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com