我们正在尝试在 Rails 3.2 中将大数据流式传输为 JSON。Rails 开箱即用的流式处理仅适用于部分,因此我们决定将 JSON 生成为文本。正如其他帖子中所建议的那样,我为每个方法创建了一个 Stream 类,并为每个对象做了一个“yield”。
Unicorn 服务器在 3 分钟内没有发送任何响应,然后将所有数据发回。
流媒体在独角兽服务器中工作吗?
如何强制刷新输出?
我们在 ELB 后面托管此服务器,请求在 60 秒后超时。
控制器方法
def listings
self.response_body = Stream.new Listing
end
流类
class Stream
def initialize collection
@collection = collection
end
def each
size = @collection.count
index = 0
yield "["
@collection.find_each do |obj|
yield (size - 1 == index) ? obj.to_json : "#{obj.to_json},"
index += 1
end
yield "]"
end
end