gpt4 book ai didi

ruby - 限制 rest-client 读取的响应大小

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:31 26 4
gpt4 key购买 nike

我正在使用 Ruby gem rest-client (1.6.7) 使用 HTTP GET 请求检索数据。但是,有时响应比我想处理的要大,所以我想通过某种方式让 RestClient 在超过我设置的大小限制时停止读取。 documentation

For cases not covered by the general API, you can use the RestClient::Request class which provide a lower-level API.

但我看不出这对我有什么帮助。我没有看到任何看起来像处理传入数据流的钩子(Hook)的东西,只有在读取整个数据后我才能执行的操作。我不想浪费时间和内存将巨大的响应读入缓冲区只是为了丢弃它。

如何限制 RestClientGET 请求中读取的数据量?或者我可以使用不同的客户端来轻松设置这样的限制吗?

最佳答案

rest-client 在下面使用 ruby​​ 的 Net::HTTP:https://github.com/rest-client/rest-client/blob/master/lib/restclient/request.rb#L303

不幸的是,Net::HTTP 似乎不会让你根据它使用的长度放弃响应,毕竟,这种方法发出所有请求: http://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#method-i-transport_request

如您所见,它使用 HTTPResponse 从服务器读取 HTTP 响应: http://ruby-doc.org/stdlib-2.0.0/libdoc/net/http/rdoc/Net/HTTPResponse.html#method-i-read_body

HTTPResponse 似乎是您可以控制是读取所有响应并将其存储到内存中,还是读取并丢弃的地方。如果您甚至不想阅读响应,我想您需要关闭套接字。

我不知道是否有具有您需要的功能的休息客户端。我想如果你想拥有这样一个细粒度的控制,你需要编写你自己的小 rest-client。

关于ruby - 限制 rest-client 读取的响应大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170824/

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