阅读Play Framework文档时,明确的是当使用阻塞I / O操作或CPU密集型操作时,应将这些操作放在另一个ExecutionContext上。他们还明确建议在数据库示例中执行此操作。
但是阅读Slick文档他们也说Slick在ExecutionContext上进行查询,所有操作都是异步的。
问题,在默认的ExecutionContext中使用Slick in Play是否可以?
编辑:Scala。
在可以在应用程序属性文件中配置的小型hicariCP
池中执行所有IO工作。它只需要ExecutionContext
用于DB调用之间的操作。例如,当您在map
上调用DBIOAction
方法时。来自slick documentation:
如果操作依赖于序列中的先前操作,则必须使用flatMap或map动态计算它。这两种方法加上过滤器可以用于动作排序的理解。由于它们采用函数参数,因此它们还需要一个隐式的ExecutionContext来运行该函数。这样,Slick确保不会在数据库线程池上运行非数据库代码。
因此,在此方法中不执行任何阻止操作之前,使用Play默认ExecutionContext
是安全的。