Выполнение резервного копирования хранилища данных в облачное хранилище - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать запланированное резервное копирование хранилища данных через мое приложение Python Flask (Python 3) в облачное хранилище.Я доволен аспектом планирования, однако у меня возникли трудности с экспортом.

Я использовал https://cloud.google.com/datastore/docs/schedule-export в качестве отправной точки, однако он ссылается на

from google.appengine.api import urlfetch

, чтобольше не поддерживается.Я изучал urllib

import urllib.request

url = 'https://datastore.googleapis.com/v1/projects/application-name-placeholder'
timestamp = datetime.datetime.now().strftime('%Y%m%d-%H%M%S')
output_url_prefix = 'gs://datastore-backup-test-name-placeholder/example'


query = client.query(kind='__kind__')
query.keys_only()
kinds = [entity.key.id_or_name for entity in query.fetch()]

query = client.query(kind='__namespace__')
query.keys_only()
all_namespaces = [entity.key.id_or_name for entity in query.fetch()]

entity_filter = {
    'kinds': kinds,
    'namespace_ids': all_namespaces
}
request = {
    'project_id': 'application-name-placeholder',
    'output_url_prefix': output_url_prefix,
    'entity_filter': entity_filter
}

headers = {
    'Content-Type': 'application/json'
}
response = urllib.request.Request(url)
response.add_header('Content-type', 'application/json')
result = urllib.request.urlopen(response, data=bytes(json.dumps(request), encoding="utf-8"))

В настоящий момент я получаю

urllib.error.HTTPError: HTTP Error 404: Not Found

Не уверен, что мой URL для хранилища данных - правильный подход, но думаю, что есть другие проблемы с моим подходом,Некоторое руководство будет оценено.

1 Ответ

0 голосов
/ 17 апреля 2019

В вашем URL у вас есть url = 'https://datastore.googleapis.com/v1/projects/application-name-placeholder', но в связанной документации есть url = 'https://datastore.googleapis.com/v1/projects/%s:export' % app_id. Вы пропустили трейлинг: экспорт.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...