¿Cancelación de la cadena de apio?

Encontré que el apio es compatible con las cadenas de tareas: http://celery.readthedocs.org/en/latest/userguide/canvas.html#chains .

La pregunta es: ¿cómo puedo detener la ejecución de la cadena en una tarea?

Por ejemplo, tenemos una cadena de N artículos (N> 2). Y en la segunda tarea nos damos cuenta de que no necesitamos que se ejecuten todas las demás tareas. ¿Qué hacer?

En las versiones más recientes de apio (3.1.6), puede revocar una cadena completa simplemente caminando la cadena y revocando cada artículo por turno.

# Build a chain for results from tasks import addd from celery import chain def revoke_chain(result): while result: result.revoke() result = result.parent # independent tasks (with immutable signatures) c = chain(*tuple(add.si(i,i) for i in xrange(50))) h = c() # some time later ... revoke_chain(h) # dependant task c = add.s(1,1) | add.s(2) | add.s(3) h = c() # some time later ... revoke_chain(h)