2

タスクキューの締め切りを10分以上超えるタスクがあります。さまざまな文書を調べると、モジュールを使用して、長時間実行されているタスクを処理するインスタンスを実行できることがわかりましたが、タスクキューを使用して実行する必要があります。私はバックエンドを使っていましたが、非難されています。Google App Engineでモジュールを使用してタスクキュー(Java)を使用してターゲットを追加するにはどうすればよいですか?

私の質問は、私の既存のApp Engine Projectにモジュールをどうやって導入するのか、どうやって長期実行タスクを実行するのですか?

Queue queue = QueueFactory.getQueue("myqueue"); 
TaskOptions task = TaskOptions.Builder.withUrl("/submitworker").method(Method.POST); 
queue.add(task); 

どのような変更、私は上記のコードで作成しなければならないのは、モジュールを使用して長時間実行タスクを追加するには:

コードの一部を以下に示しますか?

[「submitworker」は、実際の実行時間の長いタスクであるサーブレットです]私はthisリンクを参照していたが、私は第三段階で周りを取得することができません:
3.有力候補にサービス宣言要素を追加します。 -application.xmlファイル。

また、プロジェクトにモジュールを正常に追加した場合でも、このモジュールをタスクキューを使用してどのようにターゲットできますか?

私はthis質問を行っていましたが、Pythonの実装で、私の実装はJavaです。

モジュールで「ターゲット」を使用する方法と、タスクキューに追加する際にモジュールを使用する方法について、ステップバイステッププロセスを探しています。

長期実行モジュールターゲットをタスクキューに追加しても、10分後に実行を終了するか、タスクキューのタスクの有効期限が切れてもタスクが完了しますか?

お勧めします。

答えて

0

モジュールとサービスは同じものですが、古いバックエンド(それでも機能しますが、廃止予定です)に似ています。

動作するモジュールを得るための2つの基本的な方法があります。

  • EARを作成し、展開はそのおそらく、独立してWARファイルとして
  • 展開サービス(デフォルトのモジュールに今やっていること)

2番目のオプションは、application-web.xmlを変更するだけなので、おそらく簡単です。モジュールごとにリポジトリまたはブランチを作成することも、ターゲットとするモジュールを変更するビルドプロセスを作成することもできます。

今、あなたのアプリケーションのweb.xmlは、おそらくこのようなものがあります:あなたはqueue.xmlに特定のモジュールをターゲットにキュー自体を構成し、この

<application>@[email protected]</application> 
<version>@[email protected]</version>  
<module>long-running-service</module> 
<instance-class>B1</instance-class> 
<manual-scaling> 
    <instances>1</instances> 
</manual-scaling> 

のようなものに

<application>@[email protected]</application> 
<version>@[email protected]</version>  
<module>default</module> 

が変更にhereを参照してください。

+0

ありがとう...!私はガイドラインに従って、アプリエンジンで新しいサービスを作成しました。 queue.xmlにを追加しましたが、タスクが実際にバックグラウンドで実行されていることを知る方法はありますか?タスクに関する定数更新を表示するコードがありますが、更新値はフロントエンド、何が問題になる可能性がありますか?また、10分後にタスクが消え、タスクキューから消滅してもバックエンドインスタンスでタスクが実行されていますか? –

+0

クラウドコンソールでタスクの再試行ステータスを確認することができます。また、ログに記録する場合は、リクエストのヘッダーとして再試行回数にアクセスすることもできます。クラウドログビューアでサービスごとに分類されたログを表示し、そこで何が起きているのかを確認できます。タスクは、成功または再試行を超えない限り消えてはなりません。また、問題が解決されたときに最善の答えを受け入れることを忘れないでください。 – Nick

+0

ありがとう@Nick!答えは、アプリエンジンのサービスとモジュールをよく理解し、私のコンセプトを明確にしました。 –

0

免責事項:答えはドキュメントのみに基づいています(私は実際にはPythonを使用していますが、同じ概念ですが異なるコンフィグレーション)。

長時間実行可能なタスクを可能にするサービス/モジュールを作成するには、基本スケーリングまたは手動スケーリング用に構成する必要があります。 Scaling types and instance classesから(表中Deadline行):Manual scaling列の

要求は無期限に実行することができます。手動スケーリングされたインスタンスでは、/ _ah/startを処理して を選択して、HTTPレスポンスコードを返さずに何時間もプログラムまたはスクリプトを実行できます。タスクは最大24時間まで実行できます。 Basic scaling欄の

  • マニュアルスケーリングと同じ

。それぞれのモジュールのappengine-web.xmlファイルを介して行わ

モジュールのスケーリングのconfigsは、Scaling elementsで説明されています

  • <manual-scaling>

オプション。要素は モジュールの手動スケーリングを有効にし、モジュールのインスタンス数を設定します。

  • <basic-scaling>

オプション。要素は、モジュールのインスタンス数を に設定します。モジュールへの実際の変換について

、あなたがConfiguration Filesで指さガイド(an exampleを含む)およびappengine-web.xml Syntaxを(moduleserviceとコンフィグを参照)を補完します。

についてappengine-application.xmlConfiguration Filesから: appengine-application.xmlapplication.xml

META-INFディレクトリには、2つの設定ファイルを持っています。 appengine-application.xmlファイルが...

...

注アプリが展開されるとき App Engineのツールで使用される一般的な情報が含まれているすべてのappengine-web.xmlファイルが <application>タグが含まれている必要がありながら、あなたが提供する名前は無視されます。 という名称は、 appengine-application.xmlファイルの<application>タグから取得されます。

特定のサービス/モジュールに特定のキューを割り当てるには、queue.xmlファイルを使用します。 Syntaxから:

  • <target>(プッシュキュー):

オプション。この キューにエンキューされたすべてのタスクを実行する、モジュール/バージョン、フロントエンドバージョン、または バックエンドを表す文字列。

タスクのHTTPリクエストを作成するときに、文字列がアプリケーションのドメイン名の前に付加されます。たとえば、アプリID がmy-appで、ターゲットをmy-versionに設定するとします。マイサービス、 URLホスト名は、 my-version.my-service.my-app.appspot.comに設定されます。

ターゲットが指定されていない場合、タスクは、エンキューされたアプリケーションの同じバージョン で呼び出されます。したがって、 タスクをキューにターゲット を指定せずにデフォルトアプリケーションバージョンからエンキューした場合、タスクはデフォルトアプリケーションバージョンで呼び出されます。 デフォルトのアプリケーションのバージョンが、タスクがエンキューされる時刻である の間で変更され、実行される時刻である場合、タスク は新しいデフォルトバージョンで実行されることに注意してください。

モジュールをdispatch fileとともに使用している場合、タスクの HTTP要求がインターセプトされ、別のモジュールに再ルーティングされる可能性があります。

関連する問題