Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

151
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda