Dac*_*hao 14 python starlette fastapi
我想app在我的路由器文件中获取该实例,我该怎么办?
我main.py的如下:
# ...
app = FastAPI()
app.machine_learning_model = joblib.load(some_path)
app.include_router(some_router)
# ...
Run Code Online (Sandbox Code Playgroud)
现在我想在some_router的文件中使用app.machine_learning_model,我该怎么办?
Chr*_*ris 26
由于FastAPI 实际上是 Starlette 的底层,因此您可以使用通用app.state属性将模型存储在应用程序实例上,如 Starlette文档中所述(State另请参阅类实现)。例子:
app.state.ml_model = joblib.load(some_path)
Run Code Online (Sandbox Code Playgroud)
至于app从主文件外部访问实例(以及随后的模型),您可以使用该Request对象。根据 Starlette 的文档,如果 arequest可用(即端点和中间件),则 aapp在 上可用request.app。例子:
from fastapi import Request
@router.get('/')
def some_router_function(request: Request):
model = request.app.state.ml_model
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10650 次 |
| 最近记录: |