python - pymongo + gevent : throw me a banana and just monkey_patch?

标签 python mongodb pymongo monkeypatching gevent

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

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

如果这需要在 gevent 和 pymongo 上做更多的工作——但这​​是可行的——只要我能在 irc 上获得一些指导,我就非常愿意投入时间。

谢谢!

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

最佳答案

我已将 PyMongo 与 Gevent 一起使用,以下是您需要注意的一些事项:

  1. 仅实例化一个 pymongo.Connection 对象,最好作为全局或模块级变量。这很重要,因为 Connection 内部有一个池!
  2. Monkey 修补所有内容,或者至少同时修补套接字和线程。由于 Connection 中使用了线程局部变量,仅修补套接字是不够的。
  3. 记得调用 end_request 将连接返回到池中。

你的问题的答案是继续,PyMongo 与 Gevent 配合得很好。

关于python - pymongo + gevent : throw me a banana and just monkey_patch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166998/

相关文章:

python - MongoDB 和 PyMongo - 类似 SQL 的列

Django + mongoengine,作为辅助数据库时连接mongo

python - 验证 firebase 身份验证 token 权限被拒绝

python - Django:如何引发 Http401 和 Http403 异常,如 Http404,RAISE EXCEPTION not RESPONSE

python - Jupyter notebook 升级后变为 RTL

mongodb - Mongod 在启动时死于致命断言 16252

mongodb - 最佳数据记录数据库

python - 返回由字符串元素及其长度组成的对列表 - Python

javascript - 在两个集合之间集成

java - 属性中包含 ObjectId 的 MongoDB 文档