オブジェクト指向 (OO) とリクエスト処理の概念を分離します。何よりもまず、App Engine はリクエスト駆動型モデルに基づいています。リクエストは、App Engine でトリガーされるほとんどのアクションのベースです。
次に、アプリケーションのコンテナのようなもので、App Engine インフラストラクチャによって提供される App Engine インスタンス [0] と、アプリケーションのオブジェクト インスタンスである webapp2.WSGIApplication[1] の違いに注意してください。あなたが定義したクラス。
簡単にするために、アプリには webapp2.WSGIApplication が 1 つしかないと仮定します。それでは、アプリケーションが取得する最初のリクエストから始めましょう。それ以前は、App Engine マシンで利用可能なコードと構成を除いて、アプリは何も存在しません。リクエストが App Engine に到達すると、新しい App Engine インスタンス [0] が作成されます。App Engine インスタンスを配置してセットアップすると、webapp2.WSGIApplication インスタンスがインスタンス化されます[1]。これで、関連する両方の「インスタンス」が配置され、オブジェクトがコンテナの一部になりました。次に、着信リクエストが webapp2.WSGIApplication インスタンスにルーティングされます。このインスタンスは、実行した実装に従ってリクエストを処理します。
App Engine システムは、負荷に応じて新しい App Engine インスタンスを作成します。単一のインスタンスが入ってくるすべてのリクエストを処理できない場合、新しいインスタンス (最初に [0]、次に [1] 内で) を作成し、負荷を分散します。それでも不十分な場合は、3 番目のインスタンスが作成されます。負荷が減少した場合も同様です。アプリケーションが現在 3 つのインスタンスで実行されているが、負荷を処理するには 2 つあれば十分である場合、1 つのインスタンスが強制終了されます。さらに、どの特定のインスタンスがどのリクエストを処理するのかわかりません。
これは、インスタンス変数に依存する場合の 2 番目の質問につながります。App Engine は適切と思われる方法でインスタンスを作成および削除し、どのインスタンスがリクエストを処理するかわからないため、インスタンスは常にステートレスであると想定する必要があります。常にそうであるとは限りませんが、すべてのリクエストが完全に新しいインスタンスで処理される可能性があります。
状態が必要な場合は、memcache (揮発性) またはデータストア (永続的) またはその他のデータ バックエンド (ブロブストア、ファイル API など) を使用します。
[0] https://developers.google.com/appengine/docs/adminconsole/instances
[1] http://webapp-improved.appspot.com/guide/app.html
PS: リクエストを最適化するためにインスタンス メモリを使用する人もいますが、App Engine について学び始めた初心者は、これを高度な手法と見なす必要があります。