gpt4 book ai didi

ruby - ruby 中 net/http 请求包装器的未捕获异常

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:21 25 4
gpt4 key购买 nike

我有一个脚本调用 facebook 测试 api 来自动创建测试帐户。在看似随机的时间间隔内,从 50 个请求到 6000 个请求之后,我得到一个未被捕获的异常。我不知道如何找出错误是什么,所以我将从这里的相关代码开始。

我没有使用 URI 库,因为 facebook key 具有破坏 ruby​​ 1.8.7 的 URI.parse 的管道字符。

require 'rubygems'
require 'net/https'
require 'json'



http = Net::HTTP.new(domain, 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

def request_wrapper(http, request)
retry_count = 5
begin
return http.request(request)
rescue Exception => e
retry_count--
if retry_count < 0
raise e
end
retry
end



for i in 0..500 do
request = Net::HTTP::Get.new('https://' + domain + path)
response = request_wrapper(http, request)
end

这段代码会运行一段时间,但总是不可避免地报错:

in rescue in request_wrapper': undefined method-@' for nil:NilClass (NoMethodError)

有人以前见过这个未定义的方法'-@'吗?同样,这种情况断断续续地发生,但它一直是我的眼中钉。它始终指向我调用请求包装器的代码行。

感谢您的关注。

最佳答案

问题出在 retry_count-- 行。仅当失败的 HTTP 请求引发 Exception 时才会评估此行,这解释了它间歇性出现的原因。

Ruby 没有一元递减 (--) 或递增 (++) 运算符。 Matz 概述了这背后的哲学原因 here .另见 this threadthis one获取更多信息。

相反,retry_count -= 1 应该可以完成这项工作。

关于ruby - ruby 中 net/http 请求包装器的未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9692535/

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