diff --git a/pyproject.toml b/pyproject.toml index d230f4d..dd2f668 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,5 +10,4 @@ dependencies = [ "gel>=3.1.0", "redis>=5.2.1", "quart>=0.20.0", - "aioredis>=2.0.1", ] diff --git a/requirements.txt b/requirements.txt index 2c274bb..fe03cd1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ aiofiles==25.1.0 aiologger==0.7.0 -aioredis==2.0.1 async-timeout==5.0.1 blinker==1.9.0 click==8.3.2 diff --git a/server/game_board_stats/RedisGameBoardStore.py b/server/game_board_stats/RedisGameBoardStore.py index f137cab..9207898 100644 --- a/server/game_board_stats/RedisGameBoardStore.py +++ b/server/game_board_stats/RedisGameBoardStore.py @@ -1,4 +1,5 @@ from server.GameBoard import GameBoard +import inspect import pickle class RedisGameBoardStore: @@ -13,9 +14,9 @@ class RedisGameBoardStore: return self._redis try: - import aioredis # type: ignore[import-not-found] + import redis.asyncio as aioredis # type: ignore[import-not-found] except ImportError as error: # pragma: no cover - raise RuntimeError("Redis backend selected but 'aioredis' package is not installed") from error + raise RuntimeError("Redis backend selected but 'redis' package with asyncio support is not installed") from error self._redis = aioredis.from_url(self.redis_url) return self._redis @@ -43,11 +44,16 @@ class RedisGameBoardStore: if self._redis is None: return - if hasattr(self._redis, "aclose"): - await self._redis.aclose() - elif hasattr(self._redis, "close"): - close_result = self._redis.close() - if close_result is not None: - await close_result + aclose_method = getattr(self._redis, "aclose", None) + if callable(aclose_method): + maybe_result = aclose_method() + if inspect.isawaitable(maybe_result): + await maybe_result + else: + close_method = getattr(self._redis, "close", None) + if callable(close_method): + close_result = close_method() + if inspect.isawaitable(close_result): + await close_result self._redis = None