【问题标题】:Prediction IO Request Hangs预测 IO 请求挂起
【发布时间】:2016-05-19 18:00:09
【问题描述】:

我正在尝试使用以下内容查询已部署的 PredictionIO 引擎:

curl --max-time 2000 --connect-timeout 60 -H "Content-Type: application/json" \
     -d '{
       "ids": [
         "AAAAAAAA-9999-4444-ACAC-18181818181818"
       ],
       "other": "value"
      }' \

但我只收到以下内容:

服务器无法及时响应您的请求

我知道这意味着 Spray 正在接收请求(即 Spray 超时消息),但由于某种原因,无论 request-timeout 有多长,它都永远不会完成。

我的日志表明从未调用过 predict 方法,这表明 PredictionIO 请求处理程序逻辑中出现了问题。

【问题讨论】:

    标签: scala spray predictionio


    【解决方案1】:

    这确实是请求处理程序逻辑的问题,特别是查询反序列化为我的Query 类。 There is a known json4s defect 防止反序列化带有 type-aliases-in-generics 的 Query 类。以下将产生一个无限循环:

    object User {
      type Id = Int
    }
    
    case class Query(ids: Seq[User.Id], other: String)
    // This will never complete
    org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
    

    删除类型别名 User.Id 并将其替换为 Int 将解决此问题。

    case class Query(ids: Seq[Int], other: String)
    org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
    res0: String = {"users":[1,2,3],"other":"Hello World"}
    

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2022-12-12
      • 2021-10-22
      • 2017-01-06
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2016-03-05
      相关资源
      最近更新 更多