redis-py与gevent

时间:2012-06-07 08:42:31

标签: python redis gevent

redis-py库可以与gevent一起使用吗?

有没有人有使用gevent运行redis-py库的经验?有一个有效的例子吗?

他们一起玩得很好吗?是否有任何预防措施或黑客可以让他们大规模地工作?

换句话说:

使redis-py连接使用gevent greenlets,除了monkeypatch套接字之外,我还需要做一些特殊的事情吗?

from gevent import monkey

monkey.patch_all()

然后像往常一样使用redis-py?

1 个答案:

答案 0 :(得分:18)

是的,redis-py与gevent一起工作正常。

您可以查看我对以下问题的回答:您将找到一个示例和一些评论。

redis + gevent - Poor performance - what am I doing wrong?

主要陷阱是考虑到因为gevent是异步的并且套接字是monkeypatched,所以往Redis的往返成本将神奇地消失。这是完全错误的。

当使用多个连接时,

gevent主要是有趣的,因此事件循环系统调用可以被分解。如果用户代码在少量连接上为Redis生成大量同步往返,则会涉及延迟,即使这些连接是由gevent以异步方式管理的。

因此,即使使用gevent,也必须始终使用流水线来优化通信成本。