gpt4 book ai didi

ruby - 从 URL 打开大文件时防止超时

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:22 24 4
gpt4 key购买 nike

我正在编写一个 Ruby 1.8.7 脚本,它必须从服务器请求非常大的 XML 文件(1 - 5MB),这非常慢(1MB 需要 1 分钟 30 秒)。请求的文件被写入磁盘。

我在我的脚本中将超时设置为一些荒谬的秒数,因为我真的想要获取文件,而不是如果时间太长就继续前进。仍然有很多秒,我不断超时。

有这方面的最佳实践吗?

我现在用

  open(DIR + "" + number + "" + ".xml", 'wb') do |file|
begin
status = Timeout::timeout(6000000) do
file << open(url).read
end
rescue Timeout::Error => e
Rails.logger.info "Timeout for:" + number.to_s
end
end

现在 tought 超时设置为秒,这将使 6000000 超过 1 分钟 30 秒,但不知何故它没有使用我的秒超时。再次注意我只能使用 Ruby 1.8.7

最佳答案

不幸的是,这是有问题的。在 Ruby 1.9.x 中,open-uri-extended open 可以采用 read_timeout 参数,并将其传递给 http 库。但是在您使用的 Ruby 1.8.x 中,此参数不可用。

因此,您需要直接使用 net/http,调用 start/get there 并根据您的喜好设置 read_timeout。如果你只是使用 open-uri 包装器,read_timeout 仍然是 60 秒,这比你想要的要短。

关于ruby - 从 URL 打开大文件时防止超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642364/

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