美文网首页
txmongo——mongo异步驱动库

txmongo——mongo异步驱动库

作者: xsren2019 | 来源:发表于2019-11-26 16:05 被阅读0次

这几天媳妇回娘家了,自己和同学熬夜打了几次dota,感觉自己直接傻X了。流鼻涕、眼睛干涩流眼泪,网上说这是过敏性鼻炎的问题,~~~(>_<)~~~。身体是革命的本钱啊,还是要早睡早起。。。


我们的爬虫服务器是 twisted + mongo 实现的,之前用的是pymongo,这是同步的,当数据量大的时候,耗时的请求会阻塞其他的请求,这是不能忍的。在组会上我同事介绍了 txmongo ,我决定实验一下。下面是我跑通的demo。

实验过程

使用 twisted xmlrpc 实现 server 端, 使用 xmlrpc 调用 server 端的函数。

实验代码

server代码
#coding:utf8
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import defer,reactor
import txmongo
from twisted.web import xmlrpc

class CrawlerServer(xmlrpc.XMLRPC):

    allowNone = True

    def __init__(self):
        xmlrpc.XMLRPC.__init__(self)
        mongo = txmongo.MongoConnection()
        foo = mongo.foo  # `foo` database
        self.test = foo.test  # `test` collection

    @defer.inlineCallbacks
    def xmlrpc_insert(self,doc):
        result = yield self.test.insert(doc, safe=True)
        defer.returnValue(repr(result))

    @defer.inlineCallbacks
    def xmlrpc_find(self,spec,limit=10):
        result = yield self.test.find(spec, limit=limit)
        defer.returnValue(repr(result))

if __name__ == '__main__':
    root = Resource()
    root.putChild("xmlrpc", CrawlerServer())
    factory = Site(root)
    reactor.listenTCP(8888, factory)
    reactor.run()
client代码
import xmlrpclib

srv = xmlrpclib.Server("http://localhost:8888/xmlrpc",allow_none=True)
print "insert:", srv.insert({"name":"foobar","useDateTime":1})
print "find:", srv.find({"name":"foobar","useDateTime":1})

运行代码

server

python txmongo_server.py

client

python txmongo_client.py

结果:

运行结果.png

代码下载

测试代码位置

相关文章

  • txmongo——mongo异步驱动库

    这几天媳妇回娘家了,自己和同学熬夜打了几次dota,感觉自己直接傻X了。流鼻涕、眼睛干涩流眼泪,网上说这是过敏性鼻...

  • txmongo——mongo异步驱动库

    这几天媳妇回娘家了,自己和同学熬夜打了几次dota,感觉自己直接傻X了。流鼻涕、眼睛干涩流眼泪,网上说这是过敏性鼻...

  • go语言 MongoDB CRDU操作

    数据库驱动 go语言中mongodb 有一个社区驱动 mgo mgo文档 但是最近mongo官方推出了Go驱动,...

  • ET MongoDB与Mongo驱动

    ET MongoDB与Mongo驱动 简介 Mongo驱动可以直接前往Mongo官方Git下载https://gi...

  • MongoDB的使用

    首先安装python连接MongoDB的驱动 pip install pymongo 打开mongo数据库服务 在...

  • go中使用SSH认证连接MongoDB

    一、说明 go连接MongoDB驱动库mongo-driver和mgo.v2库中都不支持ssh认证连接的。但是我们...

  • motor 的一些总结

    1.- 我查看了mongod的日志,发现异步的驱动,每次都会跟mongo新生成一个连接,频繁的连接建立与删除,造成...

  • 阅读 rxjava 源代码

    介绍 事件驱动和异步调用是两种慢慢被大家接收的编程范式了。rxjava 库利用观察者模式,把事件驱动和异步调用程序...

  • 在PHP7下编译安装MongoDB扩展

    云盘资源:mongodb驱动安装MongoDB数据库 输入mongo进行测试,出现版本号即成功。 笔者推荐,建议安...

  • Jmeter操作MongoDB3.x

    正文 1.mongo-java-driver-*.jar包选用 下载MongoDB驱动mongo-java-dri...

网友评论

      本文标题:txmongo——mongo异步驱动库

      本文链接:https://www.haomeiwen.com/subject/mifywctx.html