haskell chuncked http阅读

时间:2009-12-16 10:40:30

标签: http haskell progress-bar

这是下一个实际问题。

我想从http服务器下载一些大文件(数据库更新)。此操作应阻止用户UI,阻止他输入数据。所以问题是显示用户进度条,这将告诉他还有多少时间等待。

在python中,请求对象打开类似文件的对象。我已经通过chucks读取它并通过回调函数向GUI报告。

如何在haskell中实现相同的功能?如何获取当前下载的大小并报告它?

1 个答案:

答案 0 :(得分:1)

在Haskell中你可以像python版本那样做,但细节取决于你使用的GUI库。

关于如何检测已到达的输入数量,有一些选项。一种方法是使用惰性IO。然后你通常得到一个字符串作为结果,当数据到达时,它会被懒惰地构造。然后,您可以编写遍历列表的IO函数,并在其进行时更新UI。这可能是一个非常方便的方法,但懒惰的IO往往非常脆弱,所以要小心使用它。

另一种选择是使用一些接口,当它们到达时提供对块的访问。我对这样的库没有任何个人经验,但HTTP库似乎在Base模块中支持它。

为了跟踪进度,MissingH库中有一个很好的模块:Data.Progress.Tracker

如果您提供有关特定方案的更多详细信息,则可以进一步发表评论。

祝你好运。