【问题标题】:Google App Engine Datastore Writes: How to enable/disable read-only mode remotely?Google App Engine Datastore 写入:如何远程启用/禁用只读模式?
【发布时间】:2012-10-14 08:49:32
【问题描述】:

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

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

粗略检查后,似乎唯一的方法是通过 GAE Web 管理 UI,您可以在其中 禁用重新启用在某处的页面内写入

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

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

【问题讨论】:

    标签: java google-app-engine readonly


    【解决方案1】:

    The Capabilities Python API 是您可以用来读取应用程序某些功能(如 DataStore 写入)的状态的工具。不幸的是,这个 Api 只有读取状态的方法,而没有设置状态的方法。

    已编辑:


    由于代码必须参考 Capabilities API 以获取 App-engine 中每个功能的状态,并避免因超额配额、系统维护等导致的故障...一种可能的解决方案是在前面放置一种接口标志中的 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();
      }
    }
    

    【讨论】:

    • 由于可以通过 Web 管理应用程序设置状态(启用/禁用写入),我想知道是否可以只使用 Firebug 来查看设置时发送的 HTTP 请求通过应用程序状态。我可能能够重新创建请求并使用 HttpClient 或其他东西从某些脚本中触发它们。我只是想知道这是否会违反我对 App Engine 的“使用条款”。我不明白为什么会这样,我不会使用他们尚未公开公开的任何 API……有人可以在这里权衡一下吗?
    • @ 4herpsand7derpsago 我不了解“使用条款”,但将一种将 Capabilities API 包装在标志中以禁用或启用功能的接口会更容易,并使您的代码参考此接口.您的应用必须咨询 Capabilities API 以避免失败,因此请改为咨询它,让您的代码咨询新界面并在那里启用禁用功能。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多