pymongo + gevent:给我一个香蕉,只是monkey_patch?

egb*_*ter 13 python monkeypatching mongodb pymongo gevent

在这里需要更多关于pymongo的领域专业知识比我现在快:

用python编写的pymongo驱动程序的"正确"部分是否可以调用gevent monkey_patch()并在gevent"异步"greenlets中成功改变pymongo在r/w上的阻塞行为?

如果这需要更多关于gevent和pymongo的腿部工作 - 但这是可行的 - 只要我能得到一点关于irc的指导,我就会非常愿意投入时间.

谢谢!

注意:在小规模mongo写入不是一个大问题,因为我们只是在解锁前排队写入"请求".但是与fiorix谈论他的扭曲异步mongo驱动程序(https://github.com/fiorix/mongo-async-python-driver),即使是mongo的快速写入(请求)也会导致大规模异步应用程序出现问题.(当然,非阻塞读取可能会从一开始就引起问题!)

Nam*_*yen 18

我已经将PyMongo与Gevent一起使用了,这里有一些你需要注意的事项:

  1. 仅实例化一个pymongo.Connection对象,最好是全局或模块级变量.这很重要,因为Connection它本身就有一个游泳池!
  2. 猴子补丁一切,或至少BOTH套接字和线程.由于使用了线程本地Connection,单独修补套接字是不够的.
  3. 请记得致电end_request以返回与池的连接.

你的问题的答案是继续,PyMongo与Gevent一起工作得很好.