python - python中的Redis BLPOP超时

标签 python redis

我有这个测试代码:

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/

相关文章:

python - 在数据框末尾添加 3 个重复列

redis - 为什么我不能在Redis的此排序集上使用ZRANGEBYLEX?

r - doRedis 在 Ubuntu Linux、R 和 RStudio 中出现奇怪的套接字连接错误

redis - 如何使用 sinatra、sinatra-websocket 和 redis-rb 从 Redis 消息通知 Websockets?

mysql - Sidekiq Worker:Mysql2::Error:用户 'mysqluser' @'ip-address' 拒绝访问(使用密码:NO)

ruby-on-rails - 在 ElastiCache 上保存 Ruby on Rails session

python - python中的分割方法错误

python - Celery:什么时候应该选择 Redis 作为消息代理而不是 RabbitMQ?

python - 选择Python列表中的一些元素

python - django 模板帮助,颠倒