I want to get the app
instance in my router file, what should I do ?
My main.py
is as follows:
# ... app = FastAPI() app.machine_learning_model = joblib.load(some_path) app.include_router(some_router) # ...
Now I want to use app.machine_learning_model
in some_router’s file , what should I do ?
Advertisement
Answer
You should store the model on the app instance using the generic app.state
attribute, as described in the documentation (see State
class implementation too):
app.state.ml_model = joblib.load(some_path)
As for accessing the app
instance (and subsequently, the model) from outside the main fileāas per the documentation, where a request
is available (i.e., endpoints and middleware), the app
is available on request.app
. Example:
from fastapi import Request @router.get("/some_route") def some_router_function(request: Request): model = request.app.state.ml_model