Google App Engine数据存储写入:如何远程启用/禁用只读模式?

时间:2012-10-24 10:11:00

标签: java google-app-engine readonly

阅读备份GAE's Datastore,其中:

  

我们强烈建议您在备份或还原期间将应用程序设置为只读模式...

经过粗略检查,出现,唯一的方法是通过GAE网络管理界面,您可以停用重新启用在某个页面内写入

我想编写一些Ant构建文件和/或shell和/或Python脚本,这些脚本允许我自动备份/恢复我的GAE应用程序的数据存储区。这意味着我需要一种方法来自动启用/禁用写入(将我的应用程序放入和转出“只读”模式)到我的数据存储区,所有这些都来自一些脚本(就像我说的,Ant,bash或Python)。

所以我问:这有可能吗?或者这是必须<手动“完成的事情(通过网络管理界面)?提前谢谢!

2 个答案:

答案 0 :(得分:3)

The Capabilities Python API是您可以使用的,您可以像DataStore写的那样阅读应用程序的某些功能状态。不幸的是,这个Api只有读取状态的方法,但不能用于设置状态。

<强>编辑:


由于代码必须参考Capabilities API来获取App引擎中每个功能的状态,并避免因超额配置,系统维护等而导致的故障......一种可能的解决方案是在前面放置一种接口标志内的Capabilities API用于禁用每个功能。

伪代码,即:

class DatasToreWriteCapabiliti{
  boolean DATASTORE_WRITE = true;

  public disable(){ DATASTORE_WRITE = false;}
  public enable(){ DATASTORE_WRITE = true;}

  public CapabilityStatus status(){
     if(DATASTORE_WRITE == false) return CapabilityStatus.DISABLED;

     CapabilitiesService service = CapabilitiesServiceFactory.getCapabilitiesService();
     return service.getStatus(Capability.DATASTORE_WRITE).getStatus();
  }
}

答案 1 :(得分:1)

我认为你对'将应用程序设置为只读模式'的含义感到困惑:你认为这是GAE提供的服务,但它实际上意味着,在你的应用程序中,你创建了一个模式在执行备份时阻止写入。

我希望Web界面提供的可选只读模式不是为了在备份期间冻结而设计的,而只是管理数据存储的状态。