'Get a single message from the AMQP broker. Returns a sequence with
the method frame, message properties, and body.
:param queue: Name of queue to get a message from
:type queue: str or unicode
:param bool no_ack: Tell the broker to not expect a reply
:returns: a three-tuple; (None, None, None) if the queue was empty;
otherwise (method, properties, body); NOTE: body may be None
:rtype: (None, None, None)|(spec.Basic.GetOk,
spec.BasicProperties,
str or unicode or None)'

def basic_get(self, queue=None, no_ack=False):

    assert (not self._basic_getempty_result)
    with _CallbackResult(self._RxMessageArgs) as get_ok_result:
        with self._basic_getempty_result:
            self._impl.basic_get(callback=get_ok_result.set_value_once, queue=queue, no_ack=no_ack)
            self._flush_output(get_ok_result.is_ready, self._basic_getempty_result.is_ready)
            if get_ok_result:
                evt = get_ok_result.value
                return (evt.method, evt.properties, evt.body)
            else:
                assert self._basic_getempty_result, 'wait    completed    without    GetOk    and    GetEmpty'
                return (None, None, None)
