Scala调度重启超时

时间:2013-02-08 17:40:24

标签: scala asynchronous future scala-dispatch

我在项目中使用dispatch reboot library version 0.9.5(http://dispatch.databinder.net/Dispatch.html)。通过sbt,我有以下几行:

libraryDependencies += "net.databinder.dispatch" %% "dispatch-core" % "0.9.5"

在scala(2.9.2)repl中(使用sbt console开始获取适当的依赖项)并独立于我的代码,我运行以下会话:

import dispatch._
import java.util.concurrent.TimeUnit._
val spoo = Http.threads(1).waiting( Duration(10, SECONDS ) )

(我相信第三行用一个线程设置我自己的线程池,超时为10秒)。

然后我重复运行此代码(在粘贴模式下),提交未来以获取特定网址,然后打印状态代码(异步):

spoo(url("http://www.evapcool.com/products/commercial/")).either
    .map {
        case Right(r) => println( "S: " + r.getStatusCode())
        case Left(e)  => println( "E: " + e.toString ) }

每次运行此行时,我都会等待状态代码打印,然后再次运行该行。对于前20到40个电话,它按预期工作。然后它可靠地无法报告成功的页面回复或异常。我的假设是,如果这是由超时引起的,我应该期望回调在10秒后触发,Left的{​​{1}}子句包含某种形式的超时异常。但我的经验是,这永远不会到来。

任何人都可以帮我告诉我我做错了吗?

更新

顺便说一句,我知道有一个类似的问题(答案)here但是我正在寻找官方(即图书馆作者的意图)处理超时的方式 - 而且在我看来这就是Either方法为

设计的内容

0 个答案:

没有答案