如何处理unwrapResumable中的“release”?

时间:2012-10-04 18:09:09

标签: haskell conduit haskell-wai

我写了simple Wai-to-uwsgi proxy,但在这样做的时候,我不得不使用unwrapResumable。这给了一个解开的Pipe和一个"发布"最终需要调用的函数。发布功能的类型是ResourceT IO (),我想我想用我当前的资源注册它,但为了做到这一点,我需要将发布版本设为IO ()。我应该如何处理发布功能?

1 个答案:

答案 0 :(得分:3)

发布操作应已在您的ResourceT注册。在适当的conduit代码中,有两种不同的方式来处理资源清理:

  • Pipe内。这个清理将尽早调用,但不是例外安全。
  • 来自ResourceT。这是例外安全,但可能会延迟。

unwrapResumable提供的清理操作允许您回收“尽早”方面。但是如果你只是在ResourceT区块之外调用清理,那么无论如何都没有必要担心它。