我有这个测试代码:
import redis
r = redis.Redis()
response = r.blpop('testkey', timeout=1)
print response
多次运行,这总是比 1 秒长得多,通常将近 2 秒。我的 redis 服务器是本地的,所以延迟不应该影响它。 Redis 是否没有准确计时超时,还是 python 客户端正在做的事情?
谢谢
最佳答案
好吧,对于您的程序,除了 blpop 超时之外,您还必须考虑 Python 引擎的启动时间、包的导入、与 Redis 的连接的建立。
此外,设置超时并不能保证最长等待时间。它保证了在没有任何东西可弹出时的最短等待时间,这是不同的。
请注意,对于 blpop,超时是在服务器端管理的,而不是客户端。服务器使用惰性算法执行此操作,该算法每秒检查 numclients/(hz*10) 个客户端,每 hz 次。 Hz 是您可以调整的 Redis 参数。
关于python - python中的Redis BLPOP超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908123/