1- import logging
21import time
32from urllib .parse import urlparse
43
1817
1918from .pubsub_manager import PubSubManager
2019
21- logger = logging .getLogger ('socketio' )
22-
2320
2421def parse_redis_sentinel_url (url ):
2522 """Parse a Redis Sentinel URL with the format:
@@ -112,21 +109,21 @@ def initialize(self): # pragma: no cover
112109 'Redis requires a monkey patched socket library to work '
113110 'with ' + self .server .async_mode )
114111
115- def _get_redis_module_and_error (self ):
112+ def _get_redis_module (self ):
116113 parsed_url = urlparse (self .redis_url )
117114 scheme = parsed_url .scheme .split ('+' , 1 )[0 ].lower ()
118115 if scheme in ['redis' , 'rediss' ]:
119116 if redis is None or RedisError is None :
120117 raise RuntimeError ('Redis package is not installed '
121118 '(Run "pip install redis" '
122119 'in your virtualenv).' )
123- return redis , RedisError
120+ return redis
124121 if scheme in ['valkey' , 'valkeys' ]:
125122 if valkey is None or ValkeyError is None :
126123 raise RuntimeError ('Valkey package is not installed '
127124 '(Run "pip install valkey" '
128125 'in your virtualenv).' )
129- return valkey , ValkeyError
126+ return valkey
130127 if scheme == 'unix' :
131128 if redis is None or RedisError is None :
132129 if valkey is None or ValkeyError is None :
@@ -135,14 +132,14 @@ def _get_redis_module_and_error(self):
135132 'or "pip install valkey" '
136133 'in your virtualenv).' )
137134 else :
138- return valkey , ValkeyError
135+ return valkey
139136 else :
140- return redis , RedisError
137+ return redis
141138 error_msg = f'Unsupported Redis URL scheme: { scheme } '
142139 raise ValueError (error_msg )
143140
144141 def _redis_connect (self ):
145- module , _ = self ._get_redis_module_and_error ()
142+ module = self ._get_redis_module ()
146143 parsed_url = urlparse (self .redis_url )
147144 if parsed_url .scheme in {"redis+sentinel" , "valkey+sentinel" }:
148145 sentinels , service_name , connection_kwargs = \
@@ -158,28 +155,26 @@ def _redis_connect(self):
158155 self .connected = True
159156
160157 def _publish (self , data ): # pragma: no cover
161- _ , error = self ._get_redis_module_and_error ()
162158 for retries_left in range (1 , - 1 , - 1 ): # 2 attempts
163159 try :
164160 if not self .connected :
165161 self ._redis_connect ()
166162 return self .redis .publish (self .channel , self .json .dumps (data ))
167- except error as exc :
163+ except Exception as exc :
168164 if retries_left > 0 :
169- logger .error (
165+ self . _get_logger () .error (
170166 'Cannot publish to redis... retrying' ,
171167 extra = {"redis_exception" : str (exc )}
172168 )
173169 self .connected = False
174170 else :
175- logger .error (
171+ self . _get_logger () .error (
176172 'Cannot publish to redis... giving up' ,
177173 extra = {"redis_exception" : str (exc )}
178174 )
179175 break
180176
181177 def _redis_listen_with_retries (self ): # pragma: no cover
182- _ , error = self ._get_redis_module_and_error ()
183178 retry_sleep = 1
184179 subscribed = False
185180 while True :
@@ -189,10 +184,11 @@ def _redis_listen_with_retries(self): # pragma: no cover
189184 self .pubsub .subscribe (self .channel )
190185 retry_sleep = 1
191186 yield from self .pubsub .listen ()
192- except error as exc :
193- logger .error ('Cannot receive from redis... '
194- f'retrying in { retry_sleep } secs' ,
195- extra = {"redis_exception" : str (exc )})
187+ except Exception as exc :
188+ self ._get_logger ().error (
189+ 'Cannot receive from redis... '
190+ f'retrying in { retry_sleep } secs' ,
191+ extra = {"redis_exception" : str (exc )})
196192 subscribed = False
197193 time .sleep (retry_sleep )
198194 retry_sleep *= 2
0 commit comments