Use newer version of Redis dependency incorporating async support

This commit is contained in:
François Voron
2022-06-07 08:43:41 +02:00
parent 22aebfe648
commit c5ac2b0e6e
3 changed files with 9 additions and 7 deletions

View File

@@ -13,10 +13,10 @@ pip install 'fastapi-users[redis]'
## Configuration
```py
import aioredis
import redis.asyncio
from fastapi_users.authentication import RedisStrategy
redis = aioredis.from_url("redis://localhost:6379", decode_responses=True)
redis = redis.asyncio.from_url("redis://localhost:6379", decode_responses=True)
def get_redis_strategy() -> RedisStrategy:
return RedisStrategy(redis, lifetime_seconds=3600)
@@ -24,7 +24,7 @@ def get_redis_strategy() -> RedisStrategy:
As you can see, instantiation is quite simple. It accepts the following arguments:
* `redis` (`aioredis.Redis`): An instance of `aioredis.Redis`. Note that the `decode_responses` flag set to `True` is necessary.
* `redis` (`redis.asyncio.Redis`): An instance of `redis.asyncio.Redis`. Note that the `decode_responses` flag set to `True` is necessary.
* `lifetime_seconds` (`Optional[int]`): The lifetime of the token in seconds. Defaults to `None`, which means the token doesn't expire.
!!! tip "Why it's inside a function?"

View File

@@ -1,7 +1,7 @@
import secrets
from typing import Generic, Optional
import aioredis
import redis.asyncio
from fastapi_users import exceptions, models
from fastapi_users.authentication.strategy.base import Strategy
@@ -9,7 +9,9 @@ from fastapi_users.manager import BaseUserManager
class RedisStrategy(Strategy[models.UP, models.ID], Generic[models.UP, models.ID]):
def __init__(self, redis: aioredis.Redis, lifetime_seconds: Optional[int] = None):
def __init__(
self, redis: redis.asyncio.Redis, lifetime_seconds: Optional[int] = None
):
self.redis = redis
self.lifetime_seconds = lifetime_seconds

View File

@@ -96,6 +96,7 @@ dev = [
"httpx",
"asgi_lifespan",
"uvicorn",
"types-redis",
]
sqlalchemy = [
"fastapi-users-db-sqlalchemy >=4.0.0",
@@ -107,8 +108,7 @@ oauth = [
"httpx-oauth >=0.4,<0.7"
]
redis = [
"aioredis >=2.0.1,<2.1.0",
"hiredis >=2.0.0,<2.1.0",
"redis >=4.3.3,<5.0.0",
]
[project.urls]