我正在对我的实体进行一些重构,并且我想暂时关闭对我的应用引擎应用程序的所有访问(管理员除外),以防止用户在我执行维护时修改任何实体。
什么是一个简单的方法来做到这一点?我能想到的唯一简单方法是创建一个新app.yaml
文件,其中所有页面都需要管理员。这样做的一个缺点是,我无法向用户发出友好的信息,即访问权限将很快恢复。
有更好的方法吗?
我正在对我的实体进行一些重构,并且我想暂时关闭对我的应用引擎应用程序的所有访问(管理员除外),以防止用户在我执行维护时修改任何实体。
什么是一个简单的方法来做到这一点?我能想到的唯一简单方法是创建一个新app.yaml
文件,其中所有页面都需要管理员。这样做的一个缺点是,我无法向用户发出友好的信息,即访问权限将很快恢复。
有更好的方法吗?
使用管理控制台的应用程序设置选项卡“禁用数据存储写入”:https ://developers.google.com/appengine/docs/adminconsole/applicationsettings#Disable_Datastore_Writes
这会将您的数据存储设置为只读模式并阻止任何用户进行更改。
编辑:这里有一篇关于如何修改您的应用程序以在停机期间优雅降级的文章:https ://developers.google.com/appengine/docs/python/howto/maintenance
我通过修改 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.")
这似乎是一个简单而安全的解决方案,但如果您发现这种方法有任何缺陷,请告诉我。