2011-02-05 46 views
5

Google App Engineのジョブの据え置き使用タスクキューは、または私が言うことができる限り、いくつかの後の時点で彼らはすべて同じ機能をサポートしTask QueuesGoogle App Engineを -

Deferred jopsをジョブを実行するための2つの方法(例えば延期を持っていますジョブを特定のタスクキューに配置して実行を制限することができます)。しかし、遅延ジョブは、実装がはるかに容易になり、柔軟性が向上します。

誰もが各方法のプロのことを知っていますか?遅延ジョブを介してタスクキューを使用する場合はどのような状況ですか?

答えて

11

私はあなたがそれに気づいたかどうかわからないんだけど、Deferredの作り方のドキュメントが最後にこのセクションがあります。

あなたはときext.deferred使用するか迷って、いつ建てに固執することもできますタスクキューAPI。ここに私たちの提案があります。

次の場合、遅延ライブラリを使用することもできます。あなただけ軽くタスクキューを使用

  • 既存のコードを最小限の変更でタスクキューで実行するようにリファクタリングする必要があります。
  • スキーマの移行などのメンテナンス作業を省いています。
  • アプリにはさまざまなタイプのバックグラウンドタスクがあり、それぞれに個別のハンドラを作成するのは負担になります。
  • タスクには、Pickleを使用せずに簡単にシリアル化されない複雑な引数が必要です。
  • バックグラウンドで作業する必要がある他のアプリのライブラリを作成しています。

次の場合タスクキューAPIを使用することもできます。あなたは、タスクがキューイングされ、実行されるかを完全に制御する必要がある

  • 遅延管理機能より優れたキュー管理または監視が必要です。
  • スループットが高く、オーバーヘッドが重要です。
  • より大きな抽象化を構築しており、タスクを直接制御する必要があります。
  • WebフックモデルはRPCモデルよりも優れています。

当然ながら、アプリケーションに両方のグループに適合する要件がある場合は、タスクキューAPIと遅延ライブラリの両方をサイドバイサイドで使用できます。

+1

Doh - 私はそれを逃しましたか? – Ryan

+1

遅延メタデータは* os.environ *;を使用してアクセスできます。管理コンソールを使用すると、すべてのタスクを監視したり、タスクキューまたは遅延によってキューに入れたりすることができます。 – systempuntoout

+0

@systempuntoout:訂正ありがとう!私はたいていTask Queue APIを使用していましたが、ドキュメントと私のぼんやりとしたメモリは遅延の対象となりました。私は私の答えを更新し、誤った情報について謝罪します。 – shang