'Iterator for this query.
If you know the number of results you need, use run(limit=...) instead,
or use a GQL query with a LIMIT clause. It\'s more efficient. If you want
all results use run(batch_size=<large number>).
Args:
kwargs: Any keyword arguments accepted by datastore_query.QueryOptions().
Returns:
Iterator for this query.'

def run(self, **kwargs):

    raw_query = self._get_query()
    iterator = raw_query.Run(**kwargs)
    self._last_raw_query = raw_query
    keys_only = kwargs.get('keys_only')
    if (keys_only is None):
        keys_only = self.is_keys_only()
    if keys_only:
        return iterator
    else:
        return _QueryIterator(self._model_class, iter(iterator))
