2

タスク キューの期限を 10 分以上超過しているタスクがあります。さまざまなドキュメントを調べたところ、モジュールを使用すると、長時間実行されるタスクを処理するインスタンスを実行できることがわかりましたが、できればタスク キューを使用して実行する必要があります。バックエンドを使用していましたが、非推奨です。

私の質問は、既存の App Engine プロジェクトにモジュールを導入する方法と、それらを使用して長時間実行タスクを実行する方法です。

以下はコードの一部です:

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

モジュールを使用して長時間実行されるタスクを追加するには、上記のコードにどのような変更を加える必要がありますか? [「submitworker」は実際の長時間実行タスクであるサーブレットです]

このリンクを参照しましたが、3 番目の手順を回避できません
。 3. サービス宣言要素を appengine-application.xml ファイルに追加します。

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

私はこの質問に答えましたが、これは Python の実装であり、私の実装は Java です。

モジュールで「ターゲット」を使用する方法と、タスク キューに追加するときにそれを使用する方法について、段階的なプロセスを探しています。

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

提案してください。

4

2 に答える 2

0

免責事項:答えはドキュメントのみに基づいています(私は実際にpythonを使用しています-同じ概念ですが構成が異なります)。

サービス/モジュールで長時間実行タスクを許可するには、基本または手動スケーリング用に構成する必要があります。スケーリング タイプとインスタンス クラス(表の行)からDeadline:

  • Manual scaling列で:

リクエストは無期限に実行できます。手動でスケーリングされたインスタンスは、HTTP 応答コードを返すことなく、/_ah/start を処理し、プログラムまたはスクリプトを何時間も実行することを選択できます。タスクは最大 24 時間実行できます。

  • Basic scaling列で:

手動スケーリングと同じです。

それぞれのモジュールのappengine-web.xmlファイルを介して行われるモジュールのスケーリング構成は、スケーリング要素で説明されています。

  • <manual-scaling>:

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

  • <basic-scaling>:

オプション。この要素は、モジュールのインスタンス数を設定します。

モジュールへの実際の変換については、指定したガイドを構成ファイル(を含む) とappengine-web.xml構文(moduleおよびserviceconfigs を参照) で補足してください。

についてappengine-application.xml構成ファイルから:

META-INF ディレクトリには appengine-application.xml、 とapplication.xml. この appengine-application.xmlファイルには、アプリのデプロイ時に App Engine ツールで使用される一般的な情報が含まれています...

...

すべてappengine-web.xmlのファイルに <application>タグが含まれている必要がありますが、そこに指定した名前は無視されることに注意してください。アプリケーションの名前は<application>、ファイル内のタグ から取得されappengine-application.xmlます。

特定のキューを特定のサービス/モジュールに転送するには、queue.xmlファイルを使用します。構文から:

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

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

この文字列は、タスクの HTTP 要求を作成するときに、アプリのドメイン名の先頭に追加されます。たとえば、アプリ ID がmy-appで、ターゲットをmy-version.my-serviceに設定した場合、URL ホスト名は my-version.my-service.my-app.appspot.comに設定されます。

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

モジュールをディスパッチ ファイルとともに使用している場合、タスクの HTTP リクエストが傍受され、別のモジュールに再ルーティングされる可能性があります。

于 2016-09-14T04:09:27.823 に答える