GAE では、コードがフロントエンド インスタンスまたはバックエンド インスタンスで実行されているかどうかに応じて、さまざまな制限が許可されます。たとえば、バックエンドで実行時間の長いバックグラウンド スレッドを開始できますが、コードがフロントエンド インスタンスで実行されている場合はタイムアウトになり、ランタイム例外がスローされます。
特定のコードのみがバックエンド インスタンス (フロントエンド インスタンスではなく) で実行されるようにアプリを設計する方法について、私は非常に混乱しています。
GAE がどのように機能するかについての私の理解では、アプリ (WAR ファイル) をアップロードし、必要に応じて、または定義した上限 (予算など) を超えるまで、そのアプリをスケーリング (クラスター化されたインスタンスを作成) します。
しかし、私が間違っていない限り、同じアプリに対して異なるモジュール (複数の WAR) をアップロードすることはできないため、1 つの WAR をフロントエンド インスタンスで実行し、別の WAR をバックエンド インスタンスで実行します (保証するため)。バックエンドでのみバックグラウンド スレッドを実行することを忘れないでください!)。
私の質問は次のとおりです。適切なコードが常に適切なインスタンスで実行されるように、GAE アプリをどのように開発、パッケージ化、デプロイしますか? これに接するのは、特定のバックエンドで実行されるさまざまな長時間実行ジョブを指定する方法の問題です。たとえば、毎晩深夜に実行するようにクローン化する必要があるバックグラウンド スレッドがあり、10 個のバックエンドがある場合、毎晩 10 個のインスタンスすべてで同じバックグラウンド スレッドが開始されることになるのではないでしょうか? 明らかに、ジョブを実行するバックエンドを 1 つだけにしたい状況と、各バックエンドが同じように動作する必要がある他のインスタンスがある状況があります。
繰り返しになりますが、正しいコードが正しいインスタンスにデプロイされ、実行されるようにするにはどうすればよいでしょうか? 前もって感謝します!