Revoking tasks

ask edited this page Aug 13, 2010 · 5 revisions

Status

Implemented in the master branch, on track for 1.0.

Synopsis

This is the design plan for implementing the ability to revoke a task that has been sent.

Proposed Solution

We’ll add a broadcast queue:

queue: "celerycast"
exchange: "celerycast"
exchange_type: "fanout"  
binding_key: ""

Each worker is listening to this queue, when a message of the following format arrives:

{"revoke": "$task-uuid"}

it saves this uuid as revoked, the mediator then skips this message if it ever gets popped off the queue.

To make sure this dict doesn’t grow large, the entries expires after a configurable amount of time.