По-видимому, Ваш взлом был чем-то вроде этого:
# Deleting all messages older than "earliest_date"
q = db.GqlQuery("SELECT * FROM Message WHERE create_date < :1", earliest_date)
results = q.fetch(1000)
while results:
db.delete(results)
results = q.fetch(1000, len(results))
, Как Вы говорите, если существуют достаточные данные, Вы собираетесь поразить тайм-аут запроса, прежде чем это пройдет через все записи. Необходимо было бы повторно вызвать этот запрос многократно снаружи, чтобы гарантировать, что все данные были стерты; достаточно легкий сделать, но едва идеальный.
консоль администрирования, кажется, не предлагает справки, как (на основе моего собственного опыта с ним), это, кажется, только позволяет объектам данного типа быть перечисленными и затем удаленными на постранично основание.
При тестировании, я должен был произвести чистку своей базы данных по запуску для избавлений от существующих данных.
я вывел бы из этого, что Google воздействует на принцип, что диск является дешевым, и таким образом, данные являются обычно осиротевшими (индексы к избыточным замененным данным), а не удаленный. Данный существует установленная сумма доступных данных к каждому приложению в данный момент (0,5 ГБ), это не много справки для пользователей не-Google App Engine.
Вы ищете отличия, которого нет в groovy.
«В Groovy поля и свойства были объединены, так что они действуют и выглядят одинаково»
Чтобы получить доступ к полю напрямую, вы должны добавить к нему знак @:
assert "getter val" == new Foo().bar
assert "init val" == new Foo().@bar
Краткая форма new Foo (). GetBar ()
работает , хотя bar
не является собственностью, с моей точки зрения, он все же краток.
Напротив, вы не можете вызвать foo.setBar ("setter val")
, но вы могли бы, если бы вы определили bar
как свойство без модификатор доступа.