pymongo+gevent:给我一根香蕉和一个猴子补丁?

2024-10-01 15:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

这里的Quickie需要比我现在更多的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的快速写入(请求)也可能在规模上导致异步应用程序出现问题。(当然,非阻塞读取从一开始就可能导致问题!)在


Tags: mongoirc驱动程序时间gevent领域monkeypatch
2条回答

在最初的检查中,它似乎没有在c代码中执行任何socket操作,所以应该没问题(阻塞ops应该只阻塞绿色线程)。在

我在Gevent中使用了PyMongo,下面是一些您需要注意的事项:

  1. 只实例化一个pymongo.Connection对象,最好是全局或模块级变量。这很重要,因为Connection本身有一个池!在
  2. 猴子修补所有东西,或者至少同时修补套接字和线程。由于在Connection中使用了线程局部变量,光是修补套接字是不够的。在
  3. 记住调用end_request以返回到池的连接。在

你的问题的答案是,PyMongo和Gevent合作得很好。在

相关问题 更多 >

    热门问题