Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
El middleware FastApi en una carpeta diferente no funciona

Recibo este error cuando intento ejecutar mi API FastApi.

app = cls(app=app, **options) TypeError: el objeto 'módulo' no se puede llamar

Estoy tratando de agregar un middleware en otra carpeta separada de main.py y no sé por qué no funciona. De lo contrario, cuando agrego el código de middleware en main.py funciona sin problemas. Aquí está mi código, gracias por su ayuda y disculpe mi inglés.

principal.py

 from fastapi import FastAPI from fastapi import Depends, FastAPI, HTTPException from fastapi import Request from routers import rutas from utils import CheckApiKey from utils.CheckApiKey import check_api_key app = FastAPI() app.add_middleware(CheckApiKey, dispatch=check_api_key) <--- Here calling middleware app.include_router(rutas.router) if __name__ == "__main__": import uvicorn uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)

software intermedio

 from fastapi import Request async def check_api_key(request: Request, call_next): print("ok") response = await call_next(request) return response
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Encontré la solución... Tengo que crear una clase que herede de starlette basehttpmiddleare, así.

 from starlette.middleware.base import BaseHTTPMiddleware class CheckApiKey(BaseHTTPMiddleware): async def dispatch(self, request, call_next): print("ok") response = await call_next(request) return response
over 4 years ago · Santiago Trujillo Denunciar

0

CheckApiKey parece un módulo de Python en su caso y check_api_key es la función de middleware.

El problema era que el método add_middleware() espera que el primer argumento sea una función invocable o una clase invocable . Pero en tu caso, te dieron un módulo .

Asi que,

Cambie su declaración como,

 app.add_middleware( check_api_key )
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda