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

942
Visualizações
Python: clase de tareas FastAPI y Celery. NotImplementedError: no se ha configurado ningún backend de resultados

Estoy desarrollando una API donde los usuarios pueden enviarme solicitudes POST. Cuando se reciben solicitudes, quiero una cola para procesarlas.

Cuando mis solicitudes de datos se envían a la cola de apio, quiero que mis trabajadores (servidor remoto) manejen sus.

Para esto, uso:

  • apio versión 5.1.0 para trabajadores
  • RabbitMQ versión 3.9 para mensajes

Quiero que mi código siga los métodos de programación de clases , por lo que me gustaría usar la clase Celery.Task.

Mi código a continuación:

  • server.py : es mi aplicación FASTAPI y puntos finales. Debería manejar mi tarea llamada cliente .
  • tareas.py : es mi instancia de celery.Celery y clases de celery.Task.
 # server.py # Module imports from fastapi import ( FastAPI, Request ) from fastapi.responses import ( JSONResponse ) import uvicorn # Own module from tasks import ( client, add ) # Environment app = FastAPI() # Endpoints @app.post('/post/{name}') def get_post(request: Request, name: str): result_not_working = client.delay(1, 2) # Not working result_working = add.delay(1, 2) # Working return JSONResponse(status_code=200, content={"status": 200, "message": f"You post {result.get()}"}) if __name__ == "__main__": uvicorn.run(app, host='', port=) # tasks.py from celery import ( Celery, Task ) # Environment app = Celery('test_celery', broker=f"amqp://RABBITMQ_USER:RABBITMQ_PWD@RABBITMQ_HOST:RABBITMQ_PORT/RABBITMQ_DB", backend='rpc://') # Class class Client(Task): name = "tasks.PandasClient" def run(self, x, y, **kwargs): return x + y @app.task(name="add") def add(x, y): return x + y client = Client() app.tasks.register(client)

Ahí está mi problema: cuando llamé a mi objeto de cliente en server.py (el cliente es una instancia de Cliente, que está registrada en mi cola de Apio), aparece el error:

NotImplementedError: no se configuró ningún backend de resultados.

PERO cuando importo y llamo a mi función de agregar en server.py, funciona sin problemas.

Cosa extraña, cuando ejecuto mi trabajador con el comando apio -A tareas trabajador --loglevel=info , puedo ver:

ingrese la descripción de la imagen aquí

Me dice que la URL de mi corredor está configurada correctamente, entonces, ¿por qué no mi backend (que funciona cuando llamo a la función y no agrego la clase Client.run)

La documentación no explica cómo construir la clase Task

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

encontré la solución,

en lugar de registrar mi tarea con:

 app.tasks.register(client)

Escribí:

 app.register_task(client)

y funciona.

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