Google app engine 应用程序引擎:将实时数据存储复制到本地开发人员数据存储(仍然有效)

Google app engine 应用程序引擎:将实时数据存储复制到本地开发人员数据存储(仍然有效),google-app-engine,google-cloud-storage,google-cloud-datastore,Google App Engine,Google Cloud Storage,Google Cloud Datastore,这过去可以通过使用bulkloader下载并上传到本地dev服务器来实现。但是,由于不支持oauth2,bulkloader下载已经几个月不起作用了 一些地方建议从云存储备份下载,然后通过bulkloader或直接解析备份上传到本地数据存储。然而,这两种方法似乎都不再起作用了。bulkloader方法抛出: OperationalError: unable to open database file 用于读取备份文件的RecordsReader类在尝试读取第一条记录时到达文件末尾,导致未读取任

这过去可以通过使用bulkloader下载并上传到本地dev服务器来实现。但是,由于不支持oauth2,bulkloader下载已经几个月不起作用了

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

OperationalError: unable to open database file
用于读取备份文件的RecordsReader类在尝试读取第一条记录时到达文件末尾,导致未读取任何记录


是否存在将实时数据存储复制到本地开发人员数据存储的当前功能性方法?

RecordsReader在unix上运行良好。我一天前就试过了,效果非常好

您应该将您的种类实现添加到导入中,并在数据存储交互式shell中运行它。 例如: 从myproject.kinds\u实现导入MyKind 我已经把灯拆了

目录(a)中的pp的
:
尝试:
ppp=getattr(a,“”+pp)
如果isinstance(ppp,数据库密钥):
ppp.\u键\u参考。设置\u应用程序(appname)
购买力平价
除属性错误外:
“没关系”

而且效果很好。在我的例子中,备份下载到多个目录中,因此我修改了对这些目录的访问。对于这样的事情:

mypath中目录的
:
完整目录路径=加入(mypath,目录)
对于listdir中的子目录(目录完整路径):
full\u sub\u dir\u path=join(full\u directory\u path,sub\u dir)
onlyfiles=[f表示listdir(完整子目录路径)中的f,如果isfile(join(mypath,f))]
对于仅文件中的文件:

如果你在windows上工作,欢迎你关注我关于windows上RecordsReader的问题,希望有人能回答

编辑:
如果您将文件打开权限从“r”更改为“rb”,那么在windows上工作得非常好。

bulkloader仍然可以在使用OAuth2的Python上运行,尽管有一些警告。在从live app下载时,OAuth2令牌的刷新存在问题,因此总下载时间限制为3600秒,如果手动使用--OAuth2_refresh_令牌的刷新令牌,则总下载时间限制为3600+3600秒

上载到development server应用程序时,OAuth2将以401失败,因此有必要编辑google.appengine.ext.remote_api.handler并删除“CheckIsAdmin”,以始终返回True作为解决方法:

def CheckIsAdmin(self):
  return True
  user_is_authorized = False
  ...
然而,我对上述答案投了赞成票,因为在这一点上,它看起来是一个更稳健的解决方案