DeanWay / fastapi-versioning

api versioning for fastapi web applications
MIT License
659 stars 64 forks source link

Lifespan events are not called when using FastAPI versioning #77

Open MathiasYde opened 1 month ago

MathiasYde commented 1 month ago

Describe the bug When using VersionedFastAPI wrapper object, lifespan event is not called

To Reproduce Run

from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi_versioning import VersionedFastAPI

@asynccontextmanager
async def lifespan(app: FastAPI):
    print("Starting app")
    yield
    print("Stopping app")

app = FastAPI(lifespan=lifespan)

# run uvicorn main:app with and without VersionedFastAPI
# app = VersionedFastAPI(app)

Expected behavior The lifespan events should still be called using or not using VersionedFastAPI

tslater2006 commented 1 week ago

We ran into this same problem so I wanted to just drop you a note, you can pass the lifespan=lifespan to the VersionedFastAPI(app) call and it should work. That constructor takes kwargs and passes them onto the base FastAPI app.

app = VersionedFastAPI(
    app,
    lifespan=lifespan
)