redis / redis-py

Redis Python client
MIT License
12.68k stars 2.53k forks source link

Health checks being performed when not needed #3429

Open jmspereira opened 2 weeks ago

jmspereira commented 2 weeks ago

Version: What redis-py and what redis version is the issue happening on? redis-py 5.2.0 with redis 7.2.4

Platform: What platform / version? Python 3.10.12 on Ubuntu 22.04

Description:

Hey everyone,

I have an application that uses a Redis PubSub created with a connection from a connection pool (with a health_check_interval defined). Then, at a high rate (multiple times per second), it verifies if there are messages to be read (by calling the get_message() method, with a timeout), making that connection constantly in use. However, there are many times when there are no messages to be read, and so the can_read in the try_read function returns False. What I am observing is that there are health check commands emitted to Redis for this connection because the next_health_check is never updated, since there are no messages to be read.

Is this the expected behavior? I think it is strange to be doing health checks with this connection because it is constantly in use, despite there being no messages to be read.

Best regards, Jorge