Игровые рамки scala POST и Future - PullRequest
0 голосов
/ 10 марта 2020

У меня есть это действие в моем контроллере

def doRegister = Action { implicit request =>
    Future {
      Thread.sleep(5000)
    }
    Ok("")
  }

Это маршрут

POST /api/checkout/register controllers.shop.checkout.CheckoutAuthController.doRegister

Я хочу вернуть результат Ok, не дожидаясь Будущее.

Работает с GET-запросами (возвращается мгновенно), но не с POST. Тайм-аут применяется, и проект javascript vuejs, который выполняет вызов, должен ждать.

1 Ответ

2 голосов
/ 10 марта 2020

Согласно совету Матеуша, вызовы блокировки разгрузки для отдельного пула потоков , например

val ecForBlockingTasks = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(5))

def doRegister = Action { implicit request =>
  Future {
    Thread.sleep(5000)
  }(ecForBlockingTasks)

  Ok("")
}

Убедитесь, что вы создаете пул потоков только один раз в запуск приложения, в противном случае вы можете столкнуться с утечкой ресурсов.

...