Учитывая следующий код Spray:спрей `detach` Директивы
object Main extends App with SimpleRoutingApp {
implicit val system = ActorSystem("my-system")
val pipeline: HttpRequest => Future[String] = sendReceive ~> unmarshal[String]
startServer(interface = "localhost", port = 8080) {
path("go") {
get {
detach() {
complete {
val req = Post("http://www.google.com") ~> addHeader("Foo", "bar")
pipeline(req).recoverWith[String]{ case _ => Future { "error!" } }
}
}
}
}
}
}
я поставил функцию complete
в detach директивы.
Документах объяснить, что отрывать будет: execute the inner route inside a future.
Какое значение использования (или нет) detach
- от производительности точки зрения?
Я посмотрел на это связанный answer, но он фокусируется на том, как использовать отсоединение.
Попытка понять ваши первые несколько предложений - не будет использовать 'detach' и вызывать' Await.result' внутри результата 'route' только в одном HTTP-запросе, обрабатываемом одновременно, т. Е. Одновременно веб-приложением? –
https://groups.google.com/forum/#!topic/spray-user/ml3auuHoq_4 –
Ответьте также: да, это правда. Если не используются асинхронные директивы, блокировка в структуре маршрута предотвратит асинхронную обработку маршрута. – jrudolph