Соединение с постоянной БД FastAPI

#fastapi #starlette

Вопрос:

Я использую FastAPI в среде микросервисов в общедоступном облаке. Большая часть запроса требует подключения к pymongo и redis. Предпочтительной моделью FastAPI является внедрение соединений с БД через зависимости. Однако база данных меняет свои учетные данные раз в месяц. Для нового подключения к БД я извлекаю секрет из секретного хранилища (https-запрос) и инициирую соединение. Этот процесс довольно тяжелый, если вы делаете это по каждому запросу. Таким образом, я бы инициализировал клиента и передал его как переменную зависимостям. Но если учетные данные изменятся, это приведет к ошибке.

Могу ли я сделать что-то подобное в FastAPI (я сделал это в колбе):

 try:
    crud_to_db()
except ConnectionError:
    re_init_db_connection_on_app_level()
    crud_to_db()
 

Комментарии:

1. Есть какая-нибудь причина, почему это не сработает? Вы должны иметь возможность проверить эту проверку внутри функции , которую вы добавили в a Depends , которая затем восстановит соединение для глобального пула соединений?

2. Рассматривали ли вы возможность кэширования учетных данных в течение короткого периода времени? 1 час или около того?