【发布时间】:2016-06-23 04:09:31
【问题描述】:
我有一个 HTTP API 端点,我需要不断检查新值。幸运的是,它支持长轮询。所以我的想法是我需要实现“无限循环”,在其中我发出请求,等待响应(最多 10 分钟),从响应中获取一些值并通过将它们存储在某处产生副作用,发出另一个请求。
鉴于我有一些函数调用将启动这个“无限循环”,我还需要返回一个Closable 以满足我正在集成的 Finagle API,以便可以中断该过程。如果 HTTP 请求失败,我需要立即重试。
现在我需要弄清楚如何在 Finagle 中使用 Futures 来实现这一点。我想知道我是否可以通过对响应 Future 应用转换来使用递归?.. 还是我遗漏了一些东西,在 Finagle 中有更直接的方法来做到这一点?
谢谢!
【问题讨论】:
-
我也遇到过类似的问题,但我已经用 http4s/scalaz-stream
time.awakeEvery.map(<do http call>)解决了。