我编写了一个 ruby 脚本,其中包含要下载的文件列表(~250)。由于顺序下载需要很长时间。我想在一个单独的线程中下载每个文件。尽管我给出了 20 的延迟,但看起来所有线程一次都在访问服务器。因此,我收到 502 错误,并且没有下载任何文件。如何在不使服务器超载的情况下并行下载所有文件。
#list of fiiles
files = []
threads = []
files.each do |file|
threads << Thread.new(file){ | file |
sleep(20)
#Download the file using either curb or Net::HTTP
sleep(20)
}
end
threads.each(&:join)