'Create a single-shot timer to fire after deadline seconds. Do not
confuse with Tornado\'s timeout where you pass in the time you want to
have your callback called. Only pass in the seconds until it\'s to be
called.
NOTE: the timer callbacks are dispatched only in the scope of
specially-designated methods: see
`BlockingConnection.process_data_events` and
`BlockingChannel.start_consuming`.
:param float deadline: The number of seconds to wait to call callback
:param callable callback_method: The callback method with the signature
callback_method()
:returns: opaque timer id'

def add_timeout(self, deadline, callback_method):

    if (not callable(callback_method)):
        raise ValueError(('callback_method    parameter    must    be    callable,    but    got    %r' % (callback_method,)))
    evt = _TimerEvt(callback=callback_method)
    timer_id = self._impl.add_timeout(deadline, functools.partial(self._on_timer_ready, evt))
    evt.timer_id = timer_id
    return timer_id
