nutrition - celery python
Recuperar el resultado de la tarea por id en el apio (2)
Estoy tratando de recuperar el resultado de una tarea que se ha completado. Esto funciona
from proj.tasks import add
res = add.delay(3,4)
res.get()
7
res.status
''SUCCESS''
res.id
''0d4b36e3-a503-45e4-9125-cfec0a7dca30''
Pero quiero ejecutar esto desde otra aplicación. Así que vuelvo a ejecutar el shell de python y trato de:
from proj.tasks import add
res = add.AsyncResult(''0d4b36e3-a503-45e4-9125-cfec0a7dca30'')
res.status
''PENDING''
res.get() # Error
¿Cómo puedo recuperar el resultado?
Esto se debe a que RabbitMQ no almacena los resultados . Si necesita la capacidad de obtener los resultados más adelante, utilice redis o SQL como resultado.
Funciona utilizando AsyncResult
. (ver esta answer )
Así que primero crea la tarea:
from cel.tasks import add
res = add.delay(3,4)
res.status
''SUCCESS''
res.id
''432890aa-4f02-437d-aaca-1999b70efe8d''
Luego comienza otra concha de pitón:
from celery.result import AsyncResult
from cel.tasks import app
res = AsyncResult(''432890aa-4f02-437d-aaca-1999b70efe8d'',app=app)
res.state
''SUCCESS''
res.get()
7