对云存储执行数据存储备份

问题描述 投票:0回答:1

我试图通过我的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

不确定我的数据存储区域是否是正确的方法,但认为我的方法存在其他问题。一些指导意见将不胜感激。

python python-3.x google-cloud-datastore google-cloud-storage urllib
1个回答
0
投票

在您的URL中,您有url = 'https://datastore.googleapis.com/v1/projects/application-name-placeholder',但链接的文档有url = 'https://datastore.googleapis.com/v1/projects/%s:export' % app_id。你错过了尾随:export。

鉴于您要尝试导出整个数据库,应删除实体过滤器。如果没有实体过滤器,托管导出将导出整个数据库。

© www.soinside.com 2019 - 2024. All rights reserved.