我正在尝试使用Zlib::GzipReader
从管道中读取数据来实现流式Gzip解压缩程序,但我似乎无法弄清楚如何以非阻塞方式执行此操作。这是相关的代码:
# In thread A
read, write = IO.pipe
reader = Zlib::GzipReader.new(read) # this blocks
reader.each_line do |line|
puts "Yay line! #{line}"
end
# In thread B
streaming_http_response do |gzip_chunk|
write.puts(some_chunk)
end
如何在不将整个压缩字符串读入阅读器的情况下流式传输解压缩的内容?
答案 0 :(得分:0)
事实证明Zlib::GzipReader.new
只会阻塞,直到它可以读取标题。写完一些后,它工作得很好。