feat(redis): use asyncio
This commit is contained in:
@@ -5,15 +5,11 @@ import json
|
||||
from app.config import settings
|
||||
|
||||
from pydantic import BaseModel
|
||||
import redis.asyncio as redis
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
from sqlmodel import SQLModel
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
|
||||
try:
|
||||
import redis
|
||||
except ImportError:
|
||||
redis = None
|
||||
|
||||
|
||||
def json_serializer(value):
|
||||
if isinstance(value, BaseModel | SQLModel):
|
||||
@@ -25,10 +21,7 @@ def json_serializer(value):
|
||||
engine = create_async_engine(settings.DATABASE_URL, json_serializer=json_serializer)
|
||||
|
||||
# Redis 连接
|
||||
if redis:
|
||||
redis_client = redis.from_url(settings.REDIS_URL, decode_responses=True)
|
||||
else:
|
||||
redis_client = None
|
||||
redis_client = redis.from_url(settings.REDIS_URL, decode_responses=True)
|
||||
|
||||
|
||||
# 数据库依赖
|
||||
|
||||
@@ -8,7 +8,7 @@ from app.log import logger
|
||||
fetcher: Fetcher | None = None
|
||||
|
||||
|
||||
def get_fetcher() -> Fetcher:
|
||||
async def get_fetcher() -> Fetcher:
|
||||
global fetcher
|
||||
if fetcher is None:
|
||||
fetcher = Fetcher(
|
||||
@@ -18,15 +18,14 @@ def get_fetcher() -> Fetcher:
|
||||
settings.FETCHER_CALLBACK_URL,
|
||||
)
|
||||
redis = get_redis()
|
||||
if redis:
|
||||
access_token = redis.get(f"fetcher:access_token:{fetcher.client_id}")
|
||||
if access_token:
|
||||
fetcher.access_token = str(access_token)
|
||||
refresh_token = redis.get(f"fetcher:refresh_token:{fetcher.client_id}")
|
||||
if refresh_token:
|
||||
fetcher.refresh_token = str(refresh_token)
|
||||
if not fetcher.access_token or not fetcher.refresh_token:
|
||||
logger.opt(colors=True).info(
|
||||
f"Login to initialize fetcher: <y>{fetcher.authorize_url}</y>"
|
||||
)
|
||||
access_token = await redis.get(f"fetcher:access_token:{fetcher.client_id}")
|
||||
if access_token:
|
||||
fetcher.access_token = str(access_token)
|
||||
refresh_token = await redis.get(f"fetcher:refresh_token:{fetcher.client_id}")
|
||||
if refresh_token:
|
||||
fetcher.refresh_token = str(refresh_token)
|
||||
if not fetcher.access_token or not fetcher.refresh_token:
|
||||
logger.opt(colors=True).info(
|
||||
f"Login to initialize fetcher: <y>{fetcher.authorize_url}</y>"
|
||||
)
|
||||
return fetcher
|
||||
|
||||
Reference in New Issue
Block a user