redis-py与gevent

Jos*_*eph 23 python redis gevent

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

有没有人有使用gevent运行redis-py库的经验?有工作的例子吗?

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

换句话说:

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

from gevent import monkey

monkey.patch_all()
Run Code Online (Sandbox Code Playgroud)

那么像往常一样使用redis-py?

Did*_*zia 18

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

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

redis + gevent - 表现不佳 - 我做错了什么?

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

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

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