Motor 0.3.2 发布,此版本兼容 MongoDB 2.2,2.4 和 2.6,最低要求 PyMongo 2.7.1。
此版本修复了在 "copy_database" 方法的 socket 泄漏,重写了 "Let Us Now Praise ResourceWarnings" 里面的问题和 bug。
获得最新版本:pip install --upgrade motor
。更多内容请看这里。
Motor 为 Tornado 提供了一个基于回调和 Future 机制的非堵塞的 MongoDB 驱动程序。Motor 封装了 PyMongo
安装:$ pip install motor
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
from tornado import gen class NewMessageHandler(tornado.web.RequestHandler): @tornado.web.asynchronous @gen.coroutine def post( self ): """Insert a message.""" msg = self .get_argument( 'msg' ) db = self .settings[ 'db' ] # insert() returns a Future. Yield the Future to get the result. result = yield db.messages.insert({ 'msg' : msg}) # Success self .redirect( '/' ) class MessagesHandler(tornado.web.RequestHandler): @tornado.web.asynchronous @gen.coroutine def get( self ): """Display all messages.""" self .write( '<a href="/compose">Compose a message</a><br>' ) self .write( '<ul>' ) db = self .settings[ 'db' ] cursor = db.messages.find().sort([( '_id' , - 1 )]) while ( yield cursor.fetch_next): message = cursor.next_object() self .write( '<li>%s</li>' % message[ 'msg' ]) # Iteration complete self .write( '</ul>' ) self .finish() |