Что происходит с переменными, хранящимися в состоянии жизненного цикла в FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Что происходит с переменными, хранящимися в состоянии жизненного цикла в FastAPI?

Сообщение Anonymous »

У меня есть приложение FastAPI с MongoDB, подключенное через Motor. Я открываю соединение MongoDB в начале приложения и закрываю его в конце, используя срок службы:

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

from contextlib import asynccontextmanager
from fastapi import FastAPI, Request
from motor.motor_asyncio import AsyncIOMotorClient

@asynccontextmanager
async def lifespan(app):
mongo_client = AsyncIOMotorClient("mongo://")
mongo_db = mongo_client["mydb"]
yield {"db": mongo_db}
mongo_client.close()

app = FastAPI(lifespan=lifespan)

@app.get("/")
async def root(request: Request):
return request.state.db
До последних версий Starlette это сохранялось внутри app.state, но теперь оно сохраняется в request.state. То, как мне приходится обращаться к переменной db изнутри объекта Request, заставляет меня думать, что клиент базы данных помечается вместе с каждым отдельным запросом и потенциально открыт для уязвимостей со стороны клиента.
Что именно происходит с переменной состояния? Действительно ли он передается вместе с каждым запросом или безопасно хранить здесь клиент базы данных?


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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