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

148
Vistas
FastApi middleware on different folder not working

I,m getting this error when I try to run my FastApi api.

app = cls(app=app, **options) TypeError: 'module' object is not callable

I'm trying to add a middleware on other folder separeted from main.py and don't know why isn't working. Otherwise when I add the middleware code into main.py works without problems. Here is my code, thank you for your help and excuse my english.

main.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)

Middleware

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

I found the solution...I have to create a class that inherite from starlette basehttpmiddleare, like this.

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

The CheckApiKey seems like a python module in your case and check_api_key is the middleware function.

The issue was, the add_middleware() method expects the first argument as a callable function or callable class. But in your case, you were given a module.

So,

Change your statement as,

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