Ruby 限制rest客户端读取的响应大小

Ruby 限制rest客户端读取的响应大小,ruby,rest-client,Ruby,Rest Client,我使用RubyGem(1.6.7)使用HTTPGET请求检索数据。但是,有时响应比我想要处理的要大,因此我希望有某种方法让RestClient在超过我设置的大小限制时停止读取。警察说 对于常规API未涵盖的情况,可以使用RestClient::Request类,该类提供较低级别的API 但我看不出这对我有什么帮助。我没有看到任何看起来像是处理传入数据流的钩子的东西,只有在读取整个数据流之后才能执行的操作。我不想浪费时间和内存,将一个巨大的响应读入缓冲区,然后丢弃它 如何在GET请求中对RestC

我使用RubyGem(1.6.7)使用HTTPGET请求检索数据。但是,有时响应比我想要处理的要大,因此我希望有某种方法让
RestClient
在超过我设置的大小限制时停止读取。警察说

对于常规API未涵盖的情况,可以使用RestClient::Request类,该类提供较低级别的API

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


如何在
GET
请求中对
RestClient
读取的数据量设置限制?或者我是否可以使用另一个客户端来轻松设置这样的限制?

rest客户端在下面使用ruby的Net::HTTP:

不幸的是,似乎Net::HTTP不会让您放弃基于响应长度的响应,因为它毕竟使用此方法来发出所有请求:

如您所见,它使用HTTPResponse从服务器读取HTTP响应:

HTTPResponse似乎是您可以控制是读取所有响应并将其存储到内存中,还是读取并丢弃的地方。 我想你甚至都不想看回复,我想你需要关闭插座


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

你能不能用
Content Length
头来检查响应大小,然后决定是否继续?我有更多的时间来阅读代码。您可以使用
:raw\u response=>true
,在这种情况下,您可以分块处理响应体。请注意,实体仍将被存储。如果你想停止读取响应,你必须破解
fetch\u body
方法来丢弃块而不在任何地方写入。