Returns True if the rate limit has not been reached.

        Example:

            if not rlimit.allows():
                rasie RateExceeded()

            # ok to go...

def allows(self):
        '''
        Returns True if the rate limit has not been reached.

        Example:

            if not rlimit.allows():
                rasie RateExceeded()

            # ok to go...

        '''
        tick = time.time()
        passed = tick - self.lasttick

        self.allowance = min(self.rate, self.allowance + (passed * self.persec))

        self.lasttick = tick

        if self.allowance < 1.0:
            return False

        self.allowance -= 1.0
        return True