2017-10-10 132 views
0

从内部看,Play Framework从底部开始是异步的。 Play以异步,非阻塞的方式处理每个请求。将框架和非阻塞请求发送到PostgreSQL

如何向PostgreSQL发出非阻塞请求?此刻

@Singleton 
class Application @Inject()(usersRepossitory: UsersRepository, 
          cc: ControllerComponents) extends AbstractController(cc) { 

    def index = Action { 
    Ok(usersRepository.list().map(_.id).mkString(",")) 
    } 
} 

case class User(id: Long) 

@Singleton 
class UsersRepository @Inject()(dbapi: DBApi) { 

    private val db = dbapi.database("default") 

    val parser: RowParser[User] = Macro.namedParser[User] 

    def list: List[User] = db.withConnection { implicit connection => 
    val result: List[User] = SQL"SELECT id FROM users".as(parser.*) 
    result 
    } 
} 

回答

0

你是正确的

代码,游戏使用阻塞API在访问Postgres的。 查看Mauricio编写的异步driver
此外,您可以检查quill(它建立在Mauricio异步驱动程序之上),以便拥有一个很好的DSL语言来构建您的查询。