Estoy tratando de hacer que el controlador de excepción funcione en un proyecto grande. Sin embargo, el controlador de excepciones no se ejecuta como se esperaba. ¿Alguna sugerencia sobre lo que me podría estar perdiendo?
Estructura del proyecto simplificada:
project __init__.py main.py common __init__.py ex_handler.py
Tengo la estructura del proyecto anterior.
app.py
app = FastAPI() app.include_route(xyz)
Estoy importando este objeto enException_handler.py que tiene un código para manejar todas las excepciones relacionadas con la aplicación.
from project.main import app @app.exception_handler(CustomException) def handle_custom_ex(request: Request, exception: CustomException): ...
Sin embargo, el controlador de excepciones no se ejecuta como se esperaba. Si moví el controlador de excepción a app.py, funciona.
Referencia: https://fastapi.tiangolo.com/tutorial/handling-errors/?h=exception#install-custom-exception-handlers
Creo que quieres ir por el otro lado, es decir, importarException_handler en main.py
exception_handler
# exception_handler.py class MyException(Exception): def __init__(self, name: str): self.name = name
# main.py from project.common.exception_handler import MyException ...
En los documentos, definen la clase en su main.py
y luego pueden usarla en el objeto de la app
FastAPI.
Tenga en cuenta que deberá hacer esto desde cualquier módulo en el que desee utilizar la clase de excepción personalizada.