Я настроил функцию жизненного цикла и подключил ее к своему приложению и внутри него. функция, переменная инициализируется, но после запуска переменная остается пустой.
Код: Выделить всё
db_session = None
@asynccontextmanager
async def lifespan(app: FastAPI):
db_session = DBConnection("file.db")
if db_session.get_db_connection() is None:
raise InitializationError("Could not get access database file.")
print(db_session.get_test_value()) # Prints out a valid value
yield
app = FastAPI(lifespan=lifespan)
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
print(db_session) # Prints None
- Python 3.9
- FastAPI 0.114.2
Pydantic 2.9.1 - uvicorn 0.30.6
Я инициализировал значение с помощью [] вместо None
Я инициализировал значение с помощью {} вместо None (как в руководстве)
Я подключил сеанс базы данных к `db_session["db"] вместо того, чтобы назначить его напрямую, карта остается пустой.
Я инициализировал значение в lifespan< /code> со строкой, просто для проверки.
Я объявил переменную db_session как глобальную в функции lifespan, прежде чем присвоить ей значение.
Все тесты приводят к одному и тому же результату: значение инициализируется вне функции жизненного цикла (Нет или [] или {})
Подробнее здесь: https://stackoverflow.com/questions/789 ... pan-events