Una tarea finita de apio batido
Frecuentes
Visto 605 veces
1
Estoy usando Celery en un proyecto que se integra con una API de terceros. Necesito enviar un archivo al servicio para su procesamiento. Después de enviar el archivo, necesito solicitar el estado del procesamiento cada 3 segundos hasta que se complete.
Tal como lo tengo ahora, la tarea principal generará subtareas para verificar el estado del procesamiento. Me gustaría que estas subtareas actúen como tareas finitas de batido de apio. Quiero comenzar la vida de la tarea cuando la llamo como una subtarea y quiero terminarla cuando la tarea esté completa.
¿Cuál es la mejor manera de lograr esto?
1 Respuestas
4
Utilice Task.retry, por ejemplo:
from celery.result import AsyncResult
@task
def verify_task(task_id):
result = AsyncResult(task_id)
if result.ready():
do_something_with(result.get())
else:
verify_task.retry(countdown=1)
La cuenta regresiva es el número de segundos antes del reintento.
respondido 10 mar '12, 01:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python django rabbitmq celery celerybeat or haz tu propia pregunta.
¡Gracias! Es bueno saber que el reintento está diseñado para usarse fuera del manejo de excepciones. - Kenzic