【发布时间】:2018-04-08 04:54:43
【问题描述】:
我有一个基于 Scala 的 RESTful API。其中一条路由调用外部命令并使用 ProcessLogger 捕获输出。当我在服务器上放置少量负载(通过单元测试)时,外部命令调用开始间歇性地失败。没有响应返回,HTTP 请求超时。没有填充 Process 调用的返回码,没有抛出异常......我无法在日志中捕获或找到任何内容。 有没有一种特定的方法可以捕获 scala 中的所有 Process 调用问题,这可能有助于我调试正在发生的事情?
我的代码看起来像这样...
try {
var resultCode:Int =
(Seq("echo",data) #|
Seq("external-command-to-call")) !
ProcessLogger(stdout append _, stderr append _)
println("Output "+resultCode)
println(stderr)
println(stdout)
// check return code
if(resultCode > 0) {
Left("An error occurred")
}
} catch {
case e: Exception => {
Left("An exception occurred")
}
}
10 次中有 9 次它会打印“输出”,但间歇性地它会在外部调用中死掉,从不打印“输出”。 “左”也没有被触发。 我尝试使用 Try/Success/Failure 并捕获“Throwable”,但没有任何乐趣。
【问题讨论】: