Можно ли найти и удалить потерянные блобы в магазине приложений? - PullRequest
5 голосов
/ 29 мая 2010

Я использую API Python и создал несколько осиротевших капель во время тестирования.

Из-за ошибки в приборной панели, я не могу в настоящее время удалить их, и в любом случае в будущем я хотел бы иметь возможность сделать это программно, так как будет невозможно сделать это вручную, как только число сущностей уйдет до.

Ответы [ 2 ]

13 голосов
/ 01 июня 2010

Если ваше поле BlobReferenceProperty проиндексировано, то да, это вполне возможно.

Класс BlobInfo предоставляет тот же набор полей, что и обычная модель, поэтому вы можете сделать это примерно так:

blobs = BlobInfo.all().fetch(500)
for blob in blobs:
  if not MyModel.all().filter("blob_ref =", blob.key()).count(1):
    blob.delete()

Если у вас есть несколько капель, вы, вероятно, захотите переопределить это, используя недавно уменьшенный mapreduce API .

1 голос
/ 24 октября 2014

Небольшое улучшение: использование run вместо fetch вернет итератор вместо списка, поэтому вам не нужно ограничивать количество записей в запросе:

blobs = BlobInfo.all().run()

вместо

blobs = BlobInfo.all().fetch(500)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...