1

アプリを 2 つのモジュールに分解し始め、App Engine でアプリを正常に実行できるようになりました。モジュール/バージョン固有の URL を使用してトラフィックを誘導し、エラーなしで処理されたリクエストとタスク キュー イベントを確認することで、新しい構成を確認できます。

たとえば、http://micro-services.msn-transit-api.appspot.comを使用すると、トラフィックがデフォルト以外の新しいバージョンに正しく転送されます。

しかし、GAE コンソールでデフォルト バージョンを更新すると、新しいモジュールにディスパッチする必要があるリクエストが正しくルーティングされません。それらはデフォルト モジュールにディスパッチされ、エンドポイントが移動したため失敗します。

dispatch.yaml が有効化されていないかのようです。

デフォルトのアプリ yaml ファイル:

application: msn-transit-api
module: default
version: micro-services
runtime: python27
api_version: 1
threadsafe: true
instance_class: F1
automatic_scaling:
  min_idle_instances: 3

新しいモジュール yaml ファイル:

application: msn-transit-api
module: stats-and-maps
version: micro-services
runtime: python27
api_version: 1
threadsafe: true
instance_class: B1
basic_scaling:
  max_instances: 1

handlers:

# map apps
- url: /map(.*)
  script: stats_and_maps.maps.map.app

# stats task
- url: /stats/new/.*
  script: stats_and_maps.stats.stathat.application

ディスパッチ yaml :

dispatch:
  - url: "*/map*"
    module: stats-and-maps

  - url: "*/stats/*"
    module: stats-and-maps

失敗しているエンドポイントがタスク キュー内のジョブにヒットしていることに注意してください。

GAE のバージョンをデフォルトに設定すると、その動作が変わるのはなぜですか?

4

1 に答える 1

1

タスクキューのドキュメントに埋もれていることがわかりました。:(

キューには「ターゲット」構成ディレクティブがあります。ドキュメントには次のナゲットがあります。

ターゲットが指定されていない場合、タスクはキューに入れられたのと同じバージョンのアプリケーションで呼び出されます

このコンテキストでは、「バージョン」と「モジュール」を同じ意味で使用していると思います。

これにより、これらのルートの dispatch.yaml ファイルを廃止することもできます!

于 2015-12-06T18:49:21.930 に答える