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

97
Vistas
API rápida, acepta una matriz en la solicitud posterior

Estoy tratando de aprender a usar la biblioteca Fast API. Estoy tratando de aceptar una matriz en la publicación usando frozenset como dice la documentación, pero parece que no funciona.

 import logging from fastapi import FastAPI, BackgroundTasks from worker.celery_app import celery_app log = logging.getLogger(__name__) app = FastAPI() def celery_on_message(body): """ Logs the initiation of the endpoint """ log.warn(body) def background_on_message(task): """ logs the function when it is added to queue """ log.warn(task.get(on_message=celery_on_message, propagate=False)) @app.get("/") async def root(stocks: frozenset, background_task: BackgroundTasks): """ :param stocks: stocks to be analyzed :param background_task: initiate the tasks queue :type background_task: starlette.background.BackgroundTasks :return: """ task_name = None # set correct task name based on the way you run the example log.log(level=1, msg=f'{stocks}') task_name = "app.app.worker.celery_worker.compute_stock_indicators" task = celery_app.send_task(task_name, args=[stocks]) background_task.add_task(background_on_message, task) return {"message": "Stocks analyzed"}

Cuando estoy usando los documentos de Swagger para enviar una solicitud:

 curl -X GET "http://127.0.0.1:8000/?stocks=wix&stocks=amzn" -H "accept: application/json"

la respuesta es:

 { "detail": [ { "loc": [ "query", "stocks" ], "msg": "value is not a valid frozenset", "type": "type_error.frozenset" } ] }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

creo que hay un pequeño error

Está intentando enviar una solicitud POST pero solo tiene un punto final GET

 @app.post("/")

esto debería solucionar el problema, pero también, al usar Tipo para anotar, use escribir

 from typing import FrozenSet @app.post("/") async def root(stocks: FrozenSet, background_task: BackgroundTasks):

La World Wide Web (W3) también admite la recepción de una solicitud Body in GET , pero también se desaconseja encarecidamente. Consulte la publicación W3 al respecto. OpenAPI incluye la información del cuerpo en la solicitud, y será compatible con OpenAPI en las próximas versiones, pero aún no es compatible con SwaggerUI.

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