Какой эффект имеет использование Action.async, так как Play использует Netty, который не блокирует

Поскольку Netty является неблокирующим сервером, какой эффект приводит к изменению действия на использование.async?

def index = Action { ... }

против

def index = Action.async { ... }

Я понимаю что с.async вы получитеFuture[SimpleResult], Но так как Netty не блокирует, Play все равно будет делать что-то подобное под прикрытием?

Как это повлияет на пропускную способность / масштабируемость? Это сложный вопрос, чтобы ответить, где это зависит от других факторов?

Я спрашиваю, потому что у меня есть свой обычайAction и я хотел сбросить время ожидания куки для каждого запроса страницы, поэтому я делаю это, который являетсяasync вызов:

object MyAction extends ActionBuilder[abc123] {
  def invokeBlock[A](request: Request[A], block: (abc123[A]) => Future[SimpleResult]) = {
    ...
    val result: Future[SimpleResult] = block(new abc123(..., result))
    result.map(_.withCookies(...))
  }
}

Отнимите от приведенного выше фрагмента я используюFuture[SimpleResult]это похоже на вызовAction.async но это внутри самого моего действия?

Я хочу понять, как это повлияет на дизайн моего приложения. Похоже, что только из-за возможности устанавливать файлы cookie для каждого отдельного запроса я перешел с блокировки на неблокирование. Но я сбит с толку, так как Netty не блокирует, может быть, я действительно ничего не изменил в реальности, поскольку это было уже асинхронно?

Или я просто создал еще один асинхронный вызов, встроенный в другой?

Надеясь, что кто-то может уточнить это с некоторыми деталями и как или как это повлияет на производительность / пропускную способность.

Ответы на вопрос(2)

Ваш ответ на вопрос