diff --git a/CHANGELOG.md b/CHANGELOG.md index 14d8c8f2..9ccb8bb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.0.49] - 2024-12-19 +### Fixed +- Do not use `itertools.batched`, because it is not available in this Python version. + ## [2.0.48] - 2024-12-18 ### Changed - Improve performance of large `GET` components requests. diff --git a/src/bos/server/redis_db_utils.py b/src/bos/server/redis_db_utils.py index b544f808..c5321da2 100644 --- a/src/bos/server/redis_db_utils.py +++ b/src/bos/server/redis_db_utils.py @@ -21,7 +21,6 @@ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # -from itertools import batched import json import logging from typing import Callable @@ -111,9 +110,11 @@ def iter_values(self): """ Iterate through every item in the database. Parse each item as JSON and yield it. """ - for next_keys in batched(self.client.scan_iter(), 500): - for datastr in self.client.mget(next_keys): + all_keys = list(self.client.scan_iter()) + while all_keys: + for datastr in self.client.mget(all_keys[:500]): yield json.loads(datastr) if datastr else None + all_keys = all_keys[500:] def put(self, key, new_data): """Put data in to the database, replacing any old data."""