39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
from os import environ
|
|
|
|
from fastapi_cache.backends.redis import RedisBackend
|
|
from redis import asyncio as aioredis
|
|
from yaml import safe_load
|
|
|
|
from backend.db import db
|
|
from backend.idfm_interface.idfm_interface import IdfmInterface
|
|
from backend.settings import CacheSettings, Settings
|
|
|
|
|
|
CONFIG_PATH = environ.get("CONFIG_PATH", "./config.sample.yaml")
|
|
|
|
|
|
def load_settings(path: str) -> Settings:
|
|
with open(path, "r") as config_file:
|
|
config = safe_load(config_file)
|
|
|
|
return Settings(**config)
|
|
|
|
|
|
settings = load_settings(CONFIG_PATH)
|
|
|
|
idfm_interface = IdfmInterface(settings.idfm_api_key.get_secret_value(), db)
|
|
|
|
|
|
def init_redis_backend(settings: CacheSettings) -> RedisBackend:
|
|
login = f"{settings.user}:{settings.password}@" if settings.user is not None else ""
|
|
|
|
url = f"redis://{login}{settings.host}:{settings.port}"
|
|
|
|
redis_connections_pool = aioredis.from_url(
|
|
url, encoding="utf8", decode_responses=True
|
|
)
|
|
return RedisBackend(redis_connections_pool)
|
|
|
|
|
|
redis_backend = init_redis_backend(settings.cache)
|