我用python开发我的应用调用blpop从redis队列获取新消息,如果队列里面没有数据就阻塞。但是上线运行一段时间后,通过redis原生的blpop命令可以看到队列有数据,但是程序就是获取不到,程序一直阻塞在result=r.blpop(queue_name) ,重启后没事??这是怎么回事?有什么办法或工具找到问题吗?
代码如下:
pool = redis.ConnectionPool(host=globalConfig.redis_ip,
port=globalConfig.redis_port,db=globalConfig.redis_db)
r = redis.StrictRedis(connection_pool=pool)
while True:
result=r.blpop(queue_name) ##队列没有数据就阻塞
###执行自己的业务逻辑####
我也遇到了差不多的问题,brpop设置了timeout 3600秒 但是实际上 几分钟后就获取不到数据了 但是socket又没有断开 一直阻塞在brpop处 队列中是已经有数据的