【发布时间】:2022-11-24 09:45:07
【问题描述】:
我正在使用快速 API 进行预测。我通过 get 请求获取 if 和输入并返回响应。但是我想根据用户提供的输入 ID 动态更改端点,但我无法做到。我得到name task_id is not defined
from pydantic import BaseModel
class SoluteSolvent(BaseModel):
solvent: str
solute: str
task_id: int
api_names = ['/predict','/predict_json']
@app.get(api_names[task_id])
def predict(task_id: int,solute: str, solvent: str):
if task_id == 0:
results = predictions(solute, solvent)
response["interaction_map"] = (results[1].detach().numpy()).tolist()
response["predictions"] = results[0].item()
return {'result': response}
elif task_id == 1:
return "this is second one"
【问题讨论】:
-
为什么要动态更改端点?在第二种情况下,您可以使用 RedirectResponse 重定向到
/predict_json -
你不能像那样使用
api_names- 这些是在 FastAPI 启动时配置的,而不是在请求进入时配置的。如果你想为相同的视图函数,您可以堆叠.get()装饰器(即有多个相同的底层端点)。但是,我建议将公共代码移动到一个函数中,并且有两个视图端点只包含它们之间实际不同的代码。
标签: python python-3.x fastapi