2012-12-28 103 views
2

我正在對我的實體進行一些重構,並且想暫時關閉對我的應用引擎應用(管理員除外)的所有訪問,以防止用戶修改任何實體執行維護。GAE/P - 計劃停機維護

什麼是直接的方法來做到這一點?我能想到的唯一簡單方法是創建一個新的app.yaml文件,其中管理員對所有頁面都是必需的。其中一個缺點是,我無法給用戶一個友好的信息,即訪問將很快恢復。

有沒有更好的方法來做到這一點?

回答

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.") 

這似乎是一個簡單而安全的解決方案,但請讓我知道,如果你看到任何破綻這種方法。

3

使用管理控制檯的應用程序設置選項卡中的「禁用庫寫入」:https://developers.google.com/appengine/docs/adminconsole/applicationsettings#Disable_Datastore_Writes

這將設置你的數據存儲爲只讀模式,並防止任何用戶進行更改。

編輯:這裏有一個關於如何修改您的應用程序停機期間正常降級的好寫了:https://developers.google.com/appengine/docs/python/howto/maintenance

+0

感謝您的信息。唯一的問題是,我希望能夠以管理員身份執行數據存儲寫入,看起來您的解決方案不會允許我這樣做。 –

+0

剛剛嘗試過:應用程序的寫入已禁用,但仍可以在管理數據存儲查看器中執行操作。我還沒有嘗試過散裝加載程序。 – Sologoub

+0

請看我的答案,讓我知道你的想法。 –