2

エンティティのリファクタリングを行っています。メンテナンスの実行中にユーザーがエンティティを変更できないように、App Engine アプリへのすべてのアクセス (管理者を除く) を一時的にシャットダウンしたいと考えています。

これを行う簡単な方法は何ですか?私が考えることができる唯一の簡単な方法はapp.yaml、すべてのページに管理者が必要な新しいファイルを作成することです. これの欠点の 1 つは、アクセスがすぐに復元されるというフレンドリーなメッセージをユーザーに提供できないことです。

これを行うより良い方法はありますか?

4

2 に答える 2

3

管理コンソールの [アプリケーション設定] タブの [データストア書き込みを無効にする] を使用します: https://developers.google.com/appengine/docs/adminconsole/applicationsettings#Disable_Datastore_Writes

これにより、データストアが読み取り専用モードに設定され、ユーザーが変更できなくなります。

編集:ダウンタイム中にアプリを適切に低下させるように変更する方法については、こちらの記事をご覧ください: https://developers.google.com/appengine/docs/python/howto/maintenance

于 2012-12-28T06:32:47.900 に答える
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.")

これは簡単で安全な解決策のように思えますが、このアプローチに欠陥がある場合はお知らせください。

于 2013-01-27T15:54:27.260 に答える