(MongoDB+Tornado)是一个异步驱动程序和工具包,用于在Tornado应用程序中使用MongoDB
mongotor-skd的Python项目详细描述
#什么是Mongotor?
(mongodb+tornado)是一个异步工具包,用于在"tornado"应用程序中使用"mongodb"。Mongotor有一个python+tornado的纯实现,它只依赖于tornado和bson(由Pymongo提供)
``
*连接``池`
*支持运行数据库命令(``count``,``sum`,``mapreduce``等)
*``orm``喜欢映射文档和字段
*``signals``用于预保存、后保存、预删除、后删除、预更新和后更新
*100%的代码覆盖率(按测试)
接下来的步骤是支持:
*分片
*身份验证
*副本集中最近的首选项
*gridfs
*所有python版本(2.5、2.6、2.7、3.2和pypypy),现在只测试python 2.7
//mongotor.readthedocs.org/)获取更多示例
[pymongo](http://api.mongodb.org/python/current/)是在python中使用mongodb的推荐方法,但它不是异步的,也不在de tornado的ioloop中运行。如果你使用Pymongo,你不会利用龙卷风的优势。
[马达](http://emptysquare.net/motor/)包装pymongo并使其与greenlet异步。是一个伟大的项目,但它使用绿色。如果你能用绿色的,为什么不用绿色的替代龙卷风呢?pymongo已经在gevent中工作了,您不需要考虑使用回调编写所有代码。我的观点是,如果您使用的是一个非常强大的无阻塞web服务器,带有纯python代码,那么您可能需要使用一个纯tornado驱动程序来访问mongo,显然,因为这个模块完全支持像pymongo这样的mongodb功能。
[asyncMongo](https://github.com/bitly/asyncMongo)是一个使用tornado.ioloop访问MongoDB的异步库,但是没有实现副本集和其他MongoDB功能。
此外,这个项目走得不是很好,或者更好,也不是很快。存在许多问题和拉取请求,但这些问题和请求并没有被发现。
##安装
``` bash
pip install mongotor
```
初始化(self):
self.db=database.init('localhost:27017','mongotor嫒test')
@tornado.web.asynchronous
@gen.engine
def get(self):
user={''u id':objectid(),'name':'user name'}
yield gen.task(self.db.user.insert,user)
yield gen.task(self.db.user.update,user['''u id',{"$set":{'name':'new user name'})
user\u found=yield gen.task(self.db.user.find\u one,user[''u id'])
assert user\u found['name'='new user name'
yield gen task(self.db.user.remove,user[''u id'})'])
```
``python
``import tornado.web
from tornado import gen
from mongotor.database import database
from mongotor.node import readpreference
from bson import objectid
import time
class handler(tornado.web.requesthandler):
def initialize(self):
@tornado.web.asynchronous
@gen.engine
def get(self):
user={"u id":objectid()}
read from secondary
user\u found=yield gen.task(self.db.user.find\u one,user["u id"])
assert user\u found==user
`````
m datetime import datetime
import tornado.web
from tornado import gen
u collection="user"
name=field.stringfield()
active=field.booleanfield()
created=field.datetimefield()
类处理程序(tornado.web.requesthandler):
@tornado.web.asynchronous
@gen.engine
def get(self):
user=user()
user.name="user name"
user.active=true
user.created=datetime.now()
yield gen.task(user.save)
update date
user.name="new name"
yield gen.task(user.u更新)
tetime.now()
users_actives[0].active=false
yield gen.task(users_actives[0].save)
为新功能编写测试并发送请求。
Mongo
让Mongo启动
配置复制集
让Mongo配置
运行测试
让测试
``````
问题
请通过[ GitHub问题](https://github.com/marcelnicolay/mongotor/issues)报告任何问题
(mongodb+tornado)是一个异步工具包,用于在"tornado"应用程序中使用"mongodb"。Mongotor有一个python+tornado的纯实现,它只依赖于tornado和bson(由Pymongo提供)
``
*连接``池`
*支持运行数据库命令(``count``,``sum`,``mapreduce``等)
*``orm``喜欢映射文档和字段
*``signals``用于预保存、后保存、预删除、后删除、预更新和后更新
*100%的代码覆盖率(按测试)
接下来的步骤是支持:
*分片
*身份验证
*副本集中最近的首选项
*gridfs
*所有python版本(2.5、2.6、2.7、3.2和pypypy),现在只测试python 2.7
//mongotor.readthedocs.org/)获取更多示例
[pymongo](http://api.mongodb.org/python/current/)是在python中使用mongodb的推荐方法,但它不是异步的,也不在de tornado的ioloop中运行。如果你使用Pymongo,你不会利用龙卷风的优势。
[马达](http://emptysquare.net/motor/)包装pymongo并使其与greenlet异步。是一个伟大的项目,但它使用绿色。如果你能用绿色的,为什么不用绿色的替代龙卷风呢?pymongo已经在gevent中工作了,您不需要考虑使用回调编写所有代码。我的观点是,如果您使用的是一个非常强大的无阻塞web服务器,带有纯python代码,那么您可能需要使用一个纯tornado驱动程序来访问mongo,显然,因为这个模块完全支持像pymongo这样的mongodb功能。
[asyncMongo](https://github.com/bitly/asyncMongo)是一个使用tornado.ioloop访问MongoDB的异步库,但是没有实现副本集和其他MongoDB功能。
此外,这个项目走得不是很好,或者更好,也不是很快。存在许多问题和拉取请求,但这些问题和请求并没有被发现。
##安装
``` bash
pip install mongotor
```
初始化(self):
self.db=database.init('localhost:27017','mongotor嫒test')
@tornado.web.asynchronous
@gen.engine
def get(self):
user={''u id':objectid(),'name':'user name'}
yield gen.task(self.db.user.insert,user)
yield gen.task(self.db.user.update,user['''u id',{"$set":{'name':'new user name'})
user\u found=yield gen.task(self.db.user.find\u one,user[''u id'])
assert user\u found['name'='new user name'
yield gen task(self.db.user.remove,user[''u id'})'])
```
``python
``import tornado.web
from tornado import gen
from mongotor.database import database
from mongotor.node import readpreference
from bson import objectid
import time
class handler(tornado.web.requesthandler):
def initialize(self):
@tornado.web.asynchronous
@gen.engine
def get(self):
user={"u id":objectid()}
read from secondary
user\u found=yield gen.task(self.db.user.find\u one,user["u id"])
assert user\u found==user
`````
m datetime import datetime
import tornado.web
from tornado import gen
u collection="user"
name=field.stringfield()
active=field.booleanfield()
created=field.datetimefield()
类处理程序(tornado.web.requesthandler):
@tornado.web.asynchronous
@gen.engine
def get(self):
user=user()
user.name="user name"
user.active=true
user.created=datetime.now()
yield gen.task(user.save)
update date
user.name="new name"
yield gen.task(user.u更新)
tetime.now()
users_actives[0].active=false
yield gen.task(users_actives[0].save)
为新功能编写测试并发送请求。
Mongo
让Mongo启动
配置复制集
让Mongo配置
运行测试
让测试
``````
问题
请通过[ GitHub问题](https://github.com/marcelnicolay/mongotor/issues)报告任何问题