GAE / P - 计划维护停机时间

时间:2012-12-28 02:47:53

标签: python google-app-engine maintenance

我正在对我的实体进行一些重构,并且我想暂时关闭对我的应用引擎应用的所有访问权限(管理员除外),以防止用户在执行维护时修改任何实体。

这样做的直接方法是什么?我能想到的唯一简单方法是创建一个新的app.yaml文件,其中所有页面都需要admin。这样做的一个缺点是,我无法向用户提供一条友好的消息,即访问将很快恢复。

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

使用管理控制台的“应用程序设置”选项卡“禁用数据存储区写入”:https://developers.google.com/appengine/docs/adminconsole/applicationsettings#Disable_Datastore_Writes

这会将您的数据存储设置为只读模式,并阻止任何用户进行更改。

编辑:以下是关于如何修改您的应用以在停机期间优雅降级的好文章:https://developers.google.com/appengine/docs/python/howto/maintenance

答案 1 :(得分:0)

我通过修改WSGIApplication创建了一种维护模式。

我的main.py现在看起来像这样:

import webapp2
import views

maintenance_mode = False

# These routes need to be always available
routes = [
    # Static pages
    (r'/(|about|contact|help|faq|terms|privacy|users|methods)', 
     views.Static),
    # Other routes that should always be available here
]

if maintenance_mode:
    routes += [(r'/.*', views.Maintenance)] # Displays a maintenance message
    application = webapp2.WSGIApplication(routes)

else:
    routes += [
        # Routes that are not available in maintenance mode
    ]
    application = webapp2.WSGIApplication(routes)

views.py具有以下内容:

class Maintenance(webapp2.RequestHandler):
    def get(self):
        self.response.write (
            "My app is down for maintenance and should be back up shortly.")
    def post(self):
        self.response.write (
            "My app is down for maintenance and should be back up shortly.")

这似乎是一个简单而安全的解决方案,但如果您发现此方法存在任何缺陷,请告诉我。