3

Google App Engine のフレキシブル環境 (正式には Managed VM Environment) でのプッシュ キューの使用に問題があります。私はたくさん受け取ってい404 Instance Unavailableます(下の写真を参照)。

少し調査した結果、これらのエラーは、タスク キューにタスクを追加してから、フレキシブル VM インスタンスの新しいバージョンをデプロイしたことが原因である可能性があると考えています。以前にプッシュしたタスクキューは古いインスタンスにロックされており、実行できなくなりました。これはタスクキューがフレキシブル VM でどのように機能するか? その場合、フレキシブル VM でプッシュ タスクキューを使用するにはどうすればよいですか?

タスクキュー インスタンスが利用できません

4

3 に答える 3

4

この同じ問題に遭遇したとき、柔軟な環境への移行は 90% 完了していました。広範囲にわたる調査の結果、次の 3 つのオプションがあると結論付けました。

REST API (実験的)

タスク キューにはベータ REST API を使用します (これは、フレキシブル環境の他のすべての Google API と同様に外部であるため、認証を適切に処理する必要があります)。

REST API リファレンス: https://cloud.google.com/appengine/docs/python/taskqueue/rest/

これは外部および実験的なものであることに注意してください。ここで意味のあるドキュメントのない Java SDK を見つけてください: https://developers.google.com/api-client-library/java/apis/ (現在のバージョン: https://developers.google.com/api-client-library /java/apis/taskqueue/v1beta2 )

互換ランタイム

-compat ランタイムに基づいて、独自の柔軟な環境を構築します。これにより、柔軟な環境に適したコンテナーで古い appengine API が提供されます。

https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build (最後の列が「YES」のイメージを探します)

例: https://cloud.google.com/appengine/docs/flexible/java/dev-jetty9-and-apis

https://cloud.google.com/appengine/docs/flexible/java/migrating-an-existing-app

注: 私は 2 週間、フラストレーションを感じながら全能の神に助けを求め、ルシファーの魂の深みと未踏の次元へのコンテナ ウサギの穴をたどりました。私は最終的に屈服しなければなりませんでした。これを満足のいく程度に機能させることはできません。

プロキシ サービス

ちょっとハックな代替手段ですが、それで仕事は完了します。タスクをキューに/からプロキシする非常に薄い標準環境ラッパーサービスを作成します。必要に応じて、それらを独自のアプリに渡します。¯\_(ツ)_/¯

欠点は、余分なインスタンスをスピンアップし、余分な時間を消費していることです。

標準環境でプロキシ サービスを使用しているが、最終的なタスク ハンドラを AWS Lambda に移植しただけのバリエーションになりました (したがって、GAE から完全に外れています)。これは別の災害ですが、より管理しやすい災害です。

幸運を!

于 2016-10-06T13:34:25.583 に答える
3

私はこの製品のテクニカル リード兼マネージャーです。

あなたの質問には2つの明確な答えがあります。

まず、バージョン ルーティングの問題があるようです。おっしゃる通り、新しいバージョンを起動したため、VM に対してタスクを実行できません。デフォルトでは、バージョンの不一致を避けるために、タスクはエンキューされたバージョンで実行するように割り当てられます。queue.yaml (または queue.xml) でターゲットを再構成することにより、バージョンをオーバーライドできるはずです。そのためのドキュメントはここにあります。また、あなたの

より広い観点から、タスク キューの標準/MVM のみのサポートから離れた移行パスを構築することが、現在の最優先事項です。

代わりとなるのが Cloud Tasks です。Cloud Tasks は同じインターフェースを公開しますが、App Engine とは完全に独立して使用できます。これは AppEngine タスク キューと同じユニバースに存在するため、タスクを既存のキュー (プッシュとプルの両方) に追加できます。現在、クローズド アルファで利用できます。アルファ版に参加するには、こちらからサインアップできます。

REST API に対して新しいコードを作成しないことを強くお勧めします。これはサポートされておらず、クラウド タスクのアルファ版はすでに大幅に多くの機能を備えています。

于 2017-07-20T21:17:29.553 に答える