AppEngine数据存储 - 以编程方式备份

家资是何物,积帙列梁梠。这篇文章主要讲述AppEngine数据存储 - 以编程方式备份相关的知识,希望能为你提供帮助。
我想定期以编程方式备份??我的应用程序的数据存储区。
根据https://developers.google.com/appengine/articles/scheduled_backups的说法,似乎可以创建一个备份数据存储区的cron
但是,我需要更细粒度的解决方案:为动态更改名称空间创建不同的备份文件。
【AppEngine数据存储 - 以编程方式备份】是否可以使用GET / POST简单地调用/_ah/datastore_admin/backup.create url?
答案是; 我正是这样做,以实现一些无法用cron完成的逻辑。
使用taskqueue API添加URL请求,如下所示:

from google.appengine.api import taskqueue taskqueue.add(url='/_ah/datastore_admin/backup.create', method='GET', target='ah-builtin-python-bundle', params={'kind': ('MyKind1', 'MyKind2')})

如果你想使用更多的参数,否则这些参数会进入cron url,比如'filesystem',把它们放在params dict旁边'kind'。
另一答案以编程方式根据环境备份数据存储
除了杰米的回答之外,这还有。我需要根据环境(登台/生产)将数据存储备份到云存储。不幸的是,这不能再通过cronjob实现,所以我需要以编程方式完成并为我的脚本创建一个cron。我可以确认下面的内容是有效的,因为我看到有些人抱怨他们得到了404.但是,它只适用于实时环境,而不是本地开发服务器。
from datetime import datetimefrom flask.views import MethodViewfrom google.appengine.api import taskqueue from google.appengine.api.app_identity import app_identityclass BackupDatastoreView(MethodView):BUCKETS = { 'app-id-staging': 'datastore-backup-staging', 'app-id-production': 'datastore-backup-production' }def get(self):environment = app_identity.get_application_id()task = taskqueue.add( url='/_ah/datastore_admin/backup.create', method='GET', target='ah-builtin-python-bundle', queue_name='backup', params={ 'filesystem': 'gs', 'gs_bucket_name': self.get_bucket_name(environment), 'kind': ( 'Kind1', 'Kind2', 'Kind3' ) } )if task: return 'Started backing up %s' % environmentdef get_bucket_name(self, environment):return "{bucket}/{date}".format( bucket=self.BUCKETS.get(environment, 'datastore-backup'), date=datetime.now().strftime("%d-%m-%Y %H:%M") )

另一答案您现在可以使用托管导出和导入功能,可以通过gcloud或数据存储管理API访问:
Exporting and Importing Entities
Scheduling an Export

    推荐阅读