Celery: Abort or revoke all tasks in a chord
Instead of chording the tasks themselves you may want to consider having the chords tasks that watch the A tasks.  What I mean by this is the chord would contain tasks that check the running tasks(A) every so often to see if they are done or revoked.  When all of those return successfully the chord with then chain into task B
I use the following setup with a Redis broker and backend:
chord([A, A, A, ...])(B)

Task A does some checks. It uses AbortableTask as a base and regularly checks the task.is_aborted() flag.
Task B notifies the user about the result of the calculation

The user has the possibility to abort the A tasks. Unfortunately, when calling AbortableAsyncResult(task_a_id).abort() on all the task A instances, only the active ones are being aborted. The status for tasks that have not been received yet by a worker are changed to ABORTED, but they're still processed and the is_aborted() flag returns False.
I could of course revoke() the pending tasks instead of abort()-ing them, but the problem is that in that case the chord body (task B) is not executed anymore.
How can all pending and running task A instances be stopped, while still ensuring that task B runs?