RabbitMQ: Preventing jobs to run simultaneously on two different workers
You will have to use some locking mechanism, perhaps based on database.

When a worker is working on a django object, it marks the work in database. a MySQL example:
worker_id |  object_id | task_type 
  22          44          3  // entry inserted to mark the work
When another worker picks up a django object, it checks that it is not marked as in #1, and proceeds to pick next item.
When a worker has finished working on an object, the database lock row is deleted or marked as FINISHED.
I have a Python Django project with two RabbitMQ workers, using the pika lib, which receives jobs to perform actions on a certain Django object which is specified in the request. 
The thing is, I don't want the workers, A and B, to perform their actions on the same Django object, x, at the same time as that might cause problems. It doesn't matter which workers goes first but if A is working on x and B receives a job to work on x, I want this job to wait until A is done. 
So the problems boils down to being able to know what the other worker is working on and being able to pause a job until a certain time. Note that in my actual project I have more than 2 workers which this must be applied to, I choose two In my example to make it easier to dissect.
Thanks for the help,
Mattias