<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_available_tokens(self, count=10, token_length=15, **kwargs):
 """Gets a list of available tokens. :param count: the number of tokens to return. :param token_length: the length of the tokens. The higher the number the easier it will be to return a list. If token_length == 1 there's a strong probability that the enough tokens will exist in the db. """

        # This is the number of extra tokens to try and retrieve so calls to
        # the db can be limited
        token_buffer = int(math.ceil(count * .05))

        if token_buffer < 5:
            token_buffer = 5

        available = set([])

        while True:
            tokens = [random_alphanum(length=token_length)
                      for t in range(count + token_buffer)]
            db_tokens = self.filter(token__in=tokens).values_list('token',
                                                                  flat=True)
            available.update(set(tokens).difference(db_tokens))

            if len(available) >= count:
                return list(available)[:count]