アレッ*_*ックス 5 networking haskell http-conduit
有关于如何在Haskell中下载大文件的任何建议吗?我认为Http.Conduit是这个库是一个很好的库.但是,它是如何解决这个问题的?它的文档中有一个例子,但它不适合下载大文件,它只是下载一个文件:
import Data.Conduit.Binary (sinkFile)
import Network.HTTP.Conduit
import qualified Data.Conduit as C
main :: IO ()
main = do
request <- parseUrl "http://google.com/"
withManager $ \manager -> do
response <- http request manager
responseBody response C.$$+- sinkFile "google.html"
Run Code Online (Sandbox Code Playgroud)
我想要的是能够下载大文件而不是用完RAM,例如在性能方面做得有效等等.最好能够"继续"下载它们,意思是"现在某个部分,后来的另一个部分" .
我还发现了hackage上的download-curl软件包,但我并不认为这是一个很好的选择,甚至可以像我需要的那样通过chunk下载文件块.
Sib*_*ibi 11
Network.HTTP.Conduit
提供三个执行请求的功能:
在这三个函数中,前两个函数将使整个响应体生存在内存中.如果你想在恒定的内存中操作,那么使用http
函数.该http
功能使您可以访问流媒体界面ResumableSource
您在代码中提供的示例使用交错IO将响应主体写入常量内存空间中的文件.因此,下载大文件时不会耗尽内存.