首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用程序引擎:将实时数据存储复制到本地开发数据存储(仍可用)

应用程序引擎:将实时数据存储复制到本地开发数据存储(仍可用)
EN

Stack Overflow用户
提问于 2016-05-06 11:51:23
回答 2查看 139关注 0票数 1

以前可以通过批量加载程序下载并上传到本地开发服务器。然而,由于不支持oauth2,批量加载器下载已经几个月不起作用了。

一些地方建议从云存储备份下载,并通过批量加载程序或直接解析备份上传到本地数据存储。然而,这两个似乎都不再起作用了。bulkloader方法抛出:

代码语言:javascript
运行
复制
OperationalError: unable to open database file

而用于读取备份文件的RecordsReader类在尝试读取第一条记录时到达文件末尾,导致没有任何记录被读取。

是否存在用于将实时数据存储区拷贝到本地开发数据存储区的当前有效方法?

EN

回答 2

Stack Overflow用户

发布于 2016-05-13 15:35:24

RecordsReader在unix上运行良好。我一天前试过这个https://gist.github.com/jehna/3b258f5287fcc181aacf,它工作得很棒。

您应该添加到imports your Kind实现中,并在数据存储交互shell中运行它。例如:从myproject.kinds_implementations导入MyKind中,我删除了

for pp in dir(a): try: ppp = getattr(a, "_" + pp) if isinstance(ppp, db.Key): ppp._Key__reference.set_app(appname) ppp except AttributeError: """ It's okay """

它工作得很好。在我的例子中,备份下载在多个目录中,所以我修改了对这些目录的访问权限。像这样的事情:

for directory in mypath: full_directory_path = join(mypath, directory) for sub_dir in listdir(directory_full_path): full_sub_dir_path = join(full_directory_path, sub_dir) onlyfiles = [ f for f in listdir(full_sub_dir_path) if isfile(join(mypath,f)) ] for file in onlyfiles:

如果你在windows上工作,欢迎关注我关于windows上的RecordsReader的问题,希望有人会在那里回答Google datastore backup to local dev_appserver

编辑:如果您将文件打开权限从'r‘更改为'rb’,则在windows上工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2016-05-22 05:08:36

批量加载器仍然可以在OAuth2的Python上运行,尽管有一些注意事项。从实时应用下载时,刷新OAuth2令牌会出现问题,因此总下载时间限制为3600秒;如果手动使用刷新令牌和--oauth2_ refresh _token,则会出现3600+3600问题。

当上传到开发服务器应用时,OAuth2将失败并返回401,因此有必要编辑google.appengine.ext.remote_api.handler并清除'CheckIsAdmin‘,以始终返回True作为解决方法:

代码语言:javascript
运行
复制
def CheckIsAdmin(self):
  return True
  user_is_authorized = False
  ...

然而,我支持上面的答案,因为在这一点上它看起来是一个更健壮的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37063925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档