'Acquire a lock, represented by the given key for the given duration (in
seconds.) This method should attempt to acquire the lock once, in a
non-blocking fashion, allowing attempt retry policies to be defined
separately. A routing key may also be provided to control placement,
but how or if it is implemented is dependent on the specific backend
implementation.
The return value is not used. If the lock cannot be acquired, an
exception should be raised.'

def acquire(self, key, duration, routing_key=None):

    raise NotImplementedError
