Как использовать Depends или что-то подобное в качестве внедрения зависимостей вне методов запроса FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Depends или что-то подобное в качестве внедрения зависимостей вне методов запроса FastAPI?

Сообщение Anonymous »

Может ли кто-нибудь сказать мне, как использовать внедрение зависимостей для моего get_db() вне методов маршрутизаторов FastAPI? Судя по всему, Depends() охватывает только DI в функциях запроса.
Вот асинхронный генератор get_db():

Код: Выделить всё

async def get_db() -> AsyncGenerator[AsyncSession, None]:
async with async_session() as session:
yield session
В маршрутизаторе FastAPI я могу просто использовать Depends() следующим образом:

Код: Выделить всё

@router.get("/interactions", response_model=List[schemas.Interaction])
async def get_all_interactions(db: Annotated[AsyncSession, Depends(get_db)]) -> List[schemas.Interaction]:
interactions = await crud.get_interactions(db=db)

return [
schemas.Interaction.model_validate(interaction) for interaction in interactions
]
Теперь, помимо запроса, как я могу внедрить get_db в новый метод и избавиться от асинхронности для внутри метода?

Код: Выделить всё

@cli.command(name="create_superuser")
async def create_superuser():  # Note: how to pass db session here as param?
username = click.prompt("Username", type=str)
email = click.prompt("Email (optional)", type=str, default="")
password = getpass("Password: ")
confirm_password = getpass("Confirm Password: ")

if password != confirm_password:
click.echo("Passwords do not match")
return

async for db in database.get_db():  # Note: remove it from here
user = schemas.UserAdminCreate(
username=username,
email=None if not email else email,
password=password,
role="admin",
)
await crud.create_user(db=db, user=user)
PS: Причина этого требования в том, что я собираюсь написать тестовый пример для функции create_superuser(), который имеет собственную базу данных и соответствующий сеанс, поэтому мне было бы полезно внедрить базу данных сеанса в любые методы.


Подробнее здесь: https://stackoverflow.com/questions/778 ... -fastapi-r
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема с использованием Depends() из FastApi с AsyncGenerator
    Гость » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Проблема с использованием Depends() из FastApi с AsyncGenerator
    Гость » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Гость
  • FastAPI/pydantic: field_validator не учитывается при использовании пустого Depends()
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • FastAPI/pydantic: field_validator не учитывается при использовании пустого Depends()
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Устранение ошибки внедрения зависимостей в фоновой задаче API .NET 5
    Гость » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»