diff --git a/django_valkey/base_pool.py b/django_valkey/base_pool.py index d753312..ed68e4f 100644 --- a/django_valkey/base_pool.py +++ b/django_valkey/base_pool.py @@ -85,7 +85,14 @@ def get_or_create_connection_pool(self, params: dict) -> Pool | Any: Reimplement this method if you want distinct connection pool instance caching behavior. """ - key: str = params["url"] + # Serialize params/options into stable strings. Using str() + # robustly handles unhashable values like dicts. + params_key = "::".join(f"{k}={str(v)}" for k, v in sorted(params.items())) + options_key = "::".join( + f"{k}={str(v)}" for k, v in sorted(self.options.items()) + ) + key = (params_key, options_key) + if key not in self._pools: self._pools[key] = self.get_connection_pool(params) return self._pools[key]