2017-10-02 8 views
0

のターゲットとして、柔軟な環境には、実行中のサービスは、プッシュタスクのターゲットにすることができます:標準環境の外でフレキシブルな環境で動作しているGAEサービス。 Googleドキュメントによると、タスクキュー

、あなたはプッシュにタスクを追加することはできません のキューがありますが、柔軟な環境で実行されているサービスは、プッシュタスクの ターゲットになる可能性があります。キューにタスクを追加するときには、ターゲットパラメータ を使用するか、queue.yaml内のキュー のデフォルトターゲットを指定して、このパラメータを指定できます。

しかし、私がしようとすると、私は柔軟なサービスで404エラーが発生します。

タスクキューの必須エンドポイント(/ _ah/queue/deferred)が原因で、これは完全に正常です。これは、柔軟なサービスでは定義されていません。

タスクキューの有効なターゲットで柔軟なサービスになるにはどうすればよいですか?

何らかの方法でコード内にそのエンドポイントを定義する必要がありますか?

答えて

0

通常、タスクを受け取った後に処理を行うには、ワーカーサービスでwrite a handlerが必要です。プッシュタスクの場合、指定したurlにはHTTP requestsが送信されます。 URLが指定されていない場合は、デフォルトURL/_ah/queue/[QUEUE_NAME]が使用されます。

ここで言及したエンドポイントから、遅延タスクを使用しているようですが、これはやや特殊な種類です。回避策は、必要なURLエントリを追加してthis threadを参照してください。これはManaged VMSについて言及していますが、それでも機能するはずです。

+0

この回避策は、2つの理由から、フレキシブル環境のGAEサービスには有効ではありません。1-フレックス・エンベロープに「ハンドラ」指示が認められていません。 2 - 必要なスクリプト(google.appengine.ext.deferred.application)は、フレックスで動作しないGAEライブラリの一部です。これはGAE標準(または古いVM、スレッドで言及されたもの)専用です – Curro

+0

それを動作させる唯一の方法は、yamlではなく独自のコードでエンドポイントを定義し、タスクキューからのリクエストを処理するための適切なソースコードを開発することです(自分のgoogle.appengine.ext.deferred.application ) – Curro

+0

申し訳ありませんが私は十分に明確でない場合。ハンドラはオーバーロードされた単語です。この場合、ハンドラを書くとは、一致するURLを処理するための "自分自身のコード"を書くことです。 URLとハンドラ間のマッピングは、使用するフレームワークによって異なります。 Flexで作業していない遅延モジュールに関して、私は自分自身を試していないがAlexの広大な経験に頼っていたので正しいかもしれません。参照:https://groups.google.com/forum/#!searchin/google-appengine/Alex$20Martelli$20deferred|sort:relevance/google-appengine/GrprBiHGyns/Skb96WGPBwAJ –

関連する問題