Estoy usando celery chain en el proyecto Django.
Para tareas encadenadas, estoy usando la señal task_postrun para revocar todas las tareas posteriores similares a esta .
@task_postrun.connect def task_postrun_handler( signal, sender, task_id, task, retval, state, args, kwargs, **kwds ): # do other things first if retval != 1: task.request.chain[:] = []Entonces, si el valor de retorno de la tarea no es 1, revoque todas las tareas posteriores. Funciona bien.
Sin embargo, en mi prueba, ejecuto las tareas en modo ansioso. Ingresa a task_postrun_handler , pero no tiene una matriz de chain (las callbacks de llamada también son None ).
De esta manera, no puedo terminar las cadenas de tareas en mi prueba. Probé tanto en celery 3.1.23 como en celery 4.0.2 4.0.2
Gracias por cualquier ayuda.