2016-05-19 5 views
0

Я пытаюсь запросить развернутую двигатель PredictionIO с чем-то вроде следующего:Предсказание IO Request Висит

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

Но я только когда-либо получить следующее:

Сервер был не в состоянии производить своевременный ответ на ваш запрос

Я знаю, что это означает, что запрос принимается спреем (это сообщение о тайм-ауте распыления), но по какой-либо причине он никогда не завершается независимо от того, как долго request-timeout есть.

Мои журналы показывают, что метод predict никогда не вызывается, что говорит о том, что что-то застревает в логике обработчика запроса PredictionIO.

ответ

0

Это действительно проблема с логикой обработчика запроса, в частности десериализация запроса в мой класс Query. There is a known json4s defect, который запрещает класс Query с дескрипторами дескрипции типа-aliases-in-generics. Далее будет производить бесконечный цикл:

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"} 
Смежные вопросы