redis-py 库可以和 gevent 一起使用吗?
有人有使用 gevent 运行 redis-py 库的经验吗?有工作示例吗?
他们在一起玩得好吗?是否有任何预防措施或技巧可以让它们大规模工作?
换个说法:
要使用 gevent greenlets 进行 redis-py 连接,除了 monkeypatch 套接字之外,我还需要做一些特别的事情吗?
from gevent import monkey
monkey.patch_all()
然后像往常一样使用redis-py?
最佳答案
是的,redis-py 与 gevent 配合得很好。
您可以查看我对以下问题的回答:您会找到一个示例和一些备注。
redis + gevent - Poor performance - what am I doing wrong?
主要的陷阱是考虑到因为 gevent 是异步的并且套接字是猴子补丁的,所以往返 Redis 的成本会神奇地消失。这是完全错误的。
gevent 主要在同时使用多个连接时很有趣,因此可以分解事件循环系统调用。如果用户代码在少量连接上生成大量到 Redis 的同步往返,则会涉及延迟,即使这些连接是由 gevent 以异步方式管理的。
因此,即使使用 gevent,也必须始终使用流水线来优化通信成本。
关于python - 带 gevent 的 redis-py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928481/