gpt4 book ai didi

haskell - 使用 Amazonka 和 Servant 从 S3 存储桶流式传输

转载 作者:行者123 更新时间:2023-12-04 17:45:57 25 4
gpt4 key购买 nike

我希望能够通过 Servant 作为响应主体流式传输 S3 存储桶对象内容。

我在处理程序中缺少 MonadResource 实例时遇到问题:

src/Servant/Streaming/Example.hs:29:3: error:
* No instance for (MonadResource Handler)
arising from a use of `runAWS'
* In a stmt of a 'do' block: runAWS env conduits
In the expression:
do env <- newEnv Discover
runAWS env conduits
In an equation for `server':
server
= do env <- newEnv Discover
runAWS env conduits
|
29 | runAWS env conduits
| ^^^^^^^^^^^^^^^^^^^

我已经制作了一个存储库来复制: https://github.com/domenkozar/servant-streaming-amazonka
servant-streaming-server handle ResourceT对于 Stream (Of BS.ByteString) (ResourceT IO) () https://github.com/plow-technologies/servant-streaming/blob/master/servant-streaming-server/src/Servant/Streaming/Server/Internal.hs#L77-L79

但由于我使用的是 Amazonka,因此我还需要确保将 MonadResource for Handler 纳入该括号。我不清楚该怎么做。

我的理解是使用 enter/ hoistServer这不会起作用,因为资源会被清理得太早(在流式传输之前)。

笔记:
  • 这建立在 2016 年提出的问题之上:Haskell Servant and streaming
  • 仆人部分通过 https://github.com/plow-technologies/servant-streaming/pull/2/files 实现

  • 编辑
  • 编辑:我已经替换了 $$$$+-
  • EDIT2:我已经解决了 Conduit 特定的错误,现在正在与 MonadResource 进行斗争
  • 最佳答案

    解决了

    server :: Server API
    server = do
    env <- newEnv Discover
    res <- runInternalState (runAWS env conduits) st
    return (res >> liftIO (closeInternalState st))

    https://github.com/domenkozar/servant-streaming-amazonka/commit/c5fad78dd7bf733cecb8790035105c819d5f5ae9

    关于haskell - 使用 Amazonka 和 Servant 从 S3 存储桶流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338771/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com