Как загрузить все записи хранилища данных GAE?

Я использую массовый загрузчик GAE для загрузки данных хранилища данных.

appcfg.py download_data --log_file=bulkloader.log --kind=MyKind --application=s~myappid --url=http://myappid.appspot.com/rmt_api --filename=data_downloaded.csv --db_filename=skip --config_file=bulkloader.yaml

Но через некоторое время я получаю OverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available. Это примерно Datastore Read Operations. Похоже, я должен загрузить некоторые данные в день 1, что-то в день 2, день 3 и т. д.

Как мне это сделать?

Обновлено. В документе говорится

Если передача прервана, вы можете возобновить передачу с того места, где она была прервана, используя аргументы --db_filename=... и --result_db_filename=.... Эти аргументы являются именами файла хода выполнения и файла результатов, созданного инструментом, которые являются либо именами, которые вы предоставили с аргументами при запуске передачи, либо именами по умолчанию, которые включают метку времени. Это предполагает, что вы установили sqlite3 и не отключили файлы прогресса с --db_filename=skip.

Означает ли это, что я могу запускать appcfg.py download_data ... несколько раз, передавая одни и те же значения db_filename и result_db_filename, и он будет продолжать загружать оставшиеся записи каждый раз? Что произойдет с моим CSV-файлом? Будет ли он добавлять записи в конец файла?


person LA_    schedule 08.06.2014    source источник
comment
Сколько сущностей в этом Виде? У вас включен биллинг? Когда вы заходите в консоль разработчика, нажимаете на Quota Details, что там написано?   -  person GAEfan    schedule 08.06.2014
comment
Вот квоты: developers.google.com/appengine/docs/quotas#Datastore Не очень хорошо, без включенного биллинга. Включение выставления счетов не означает, что с вас будет взиматься плата, если вы остаетесь в рамках квот.   -  person GAEfan    schedule 09.06.2014
comment
@GAEfan, сейчас у меня там 100 231 запись. Биллинг отключен. Я бы предпочел оставить его отключенным, иначе у меня будет превышена бесплатная квота, и мне придется платить за что-то еще.   -  person LA_    schedule 09.06.2014
comment
Суточные квоты пополняются ежедневно в полночь по тихоокеанскому времени. Что, если вы начали свою задачу за 5 минут до полуночи? Если предположить, что задание занимает 10 минут, поместит ли оно половину запросов в квоту на один день, а другую половину — на следующий?   -  person GAEfan    schedule 09.06.2014


Ответы (2)


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

person GAEfan    schedule 09.06.2014
comment
В моем случае будет, в каком-то другом сценарии ловлю OverAPIQuota на остановку обработки и жду следующего дня, поэтому не могу включить биллинг. Попробую подход с db_filename и result_db_filename, чтобы загрузить все за несколько дней. - person LA_; 09.06.2014

Использование db_filename и result_db_filename позволяет загружать данные за несколько дней. После достижения дневного лимита загрузку можно остановить, а затем снова начать на следующий день — она не будет снова загружать те же данные, а продолжит загрузку оставшихся элементов. Файл CSV будет создан после загрузки всех данных (т. е. в последний день).

person LA_    schedule 11.06.2014