具有播放和执行上下文的功能

时间:2019-03-01 15:01:55

标签: scala playframework slick

阅读Play Framework文档时,很明显,当使用阻塞的I / O操作或占用大量CPU资源时,应将这些操作放在另一个ExecutionContext上。他们还明确建议在数据库示例中这样做。

但是阅读Slick文档时,他们还说Slick在ExecutionContext上具有查询功能,并且所有操作都是异步的。

问题,可以在默认的ExecutionContext中使用Play Slick吗?

编辑:Scala。

1 个答案:

答案 0 :(得分:1)

只需在您可以在应用程序属性文件中配置的小型hicariCP池中完成所有IO工作即可。仅在DB调用之间进行操作时才需要ExecutionContext。例如,当您在map上调用DBIOAction方法时。来自slick documentation

  

如果一个动作取决于序列中的上一个动作,则必须   使用flatMap或地图即时计算它。这两种方法加   过滤器可用于理解操作顺序。   由于它们采用函数参数,因此它们还需要隐式   在其上运行功能的ExecutionContext。这样,Slick可以确保   数据库线程池上没有运行非数据库代码。

因此,使用Play默认ExecutionContext是安全的,直到您在此方法中未执行任何阻止操作为止。