Play框架的非阻塞DB驱动程序

时间:2013-10-21 21:10:49

标签: scala playframework-2.0

据我了解,为了使应用程序真正无阻塞,所有执行IO的库(例如数据库驱动程序)都应该意识到它们在select循环内运行并且应该添加它们的文件描述符到主列表,以便他们的IO可以正确安排。因此,如果我使用随机驱动程序(比如https://github.com/mauricio/postgresql-async),它将阻止其他客户端在等待查询完成时的所有HTTP处理。我是否应该使用某些特定的Play(或其引擎盖下的任何内容)知道驱动程序?

2 个答案:

答案 0 :(得分:1)

我不知道实施细节,但根据此博客文章,它至少适用于一个人:

http://mauricio.github.io/2013/04/29/async-database-access-with-postgresql-play-scala-and-heroku.html

我认为Future实例虽然对应用程序不透明,但当它告诉系统等待套接字和期货的集合时,会将文件描述符移交给runloop中的select()调用。

答案 1 :(得分:-1)

将数据库查询抛出到后台线程, 并返回承诺:

http://www.playframework.com/documentation/2.0/ScalaAsync

Scala 2.10集成了Akka的期货实施:

http://doc.akka.io/docs/akka/2.2.1/scala/futures.html#introduction

免责声明 - 我从未使用Play ...