Слик с игрой и контекстом исполнения - PullRequest
0 голосов
/ 01 марта 2019

При чтении документов Play Framework ясно, что при использовании операций ввода-вывода с блокировкой или при интенсивной загрузке ЦП эти операции следует помещать в другой ExecutionContext.Они также явно рекомендуют делать это в примерах БД.

Но, читая документы Slick, они также говорят, что у Slick есть запрос на ExecutionContext для запросов, и все операции асинхронные.

Вопрос, можно ли использовать Slick?в игре со стандартным ExecutionContext?

Редактировать: Scala.

1 Ответ

0 голосов
/ 01 марта 2019

Слик выполняет всю работу ввода-вывода в небольшом пуле hicariCP, который можно настроить в файле свойств приложения.Требуется ExecutionContext только для операций между вызовами для БД.Например, когда вы вызываете метод map для DBIOAction.Из гладкой документации :

Если действие зависит от предыдущего действия в последовательности, вы должны вычислить его на лету с помощью flatMap или map.Эти два метода плюс фильтр позволяют использовать для понимания последовательности действий.Поскольку они принимают аргументы функции, им также требуется неявный ExecutionContext для запуска функции.Таким образом, Slick гарантирует, что в пуле потоков базы данных не будет запущен код, не относящийся к базе данных.

Поэтому безопасно использовать Play default ExecutionContext, пока в этих методах не будут выполнены какие-либо операции блокировки.

...