redis-py库可以与gevent一起使用吗?
有没有人有使用gevent运行redis-py库的经验?有一个有效的例子吗?
他们一起玩得很好吗?是否有任何预防措施或黑客可以让他们大规模地工作?
换句话说:
使redis-py连接使用gevent greenlets,除了monkeypatch套接字之外,我还需要做一些特殊的事情吗?
from gevent import monkey
monkey.patch_all()
然后像往常一样使用redis-py?
答案 0 :(得分:18)
是的,redis-py与gevent一起工作正常。
您可以查看我对以下问题的回答:您将找到一个示例和一些评论。
redis + gevent - Poor performance - what am I doing wrong?
主要陷阱是考虑到因为gevent是异步的并且套接字是monkeypatched,所以往Redis的往返成本将神奇地消失。这是完全错误的。
当使用多个连接时,gevent主要是有趣的,因此事件循环系统调用可以被分解。如果用户代码在少量连接上为Redis生成大量同步往返,则会涉及延迟,即使这些连接是由gevent以异步方式管理的。
因此,即使使用gevent,也必须始终使用流水线来优化通信成本。