1

Google App Engine のタスク キューのジョブは自動的にデフォルトのバックエンドに置かれますか?それとも、ジョブを呼び出すコードのバックエンド バージョンでスケジュールされますか?

「テスト」と呼ばれるバックエンドと「プロダクション」と呼ばれる 2 つのバックエンドがあり、「プロダクション」がデフォルト バージョンであるとします。

それぞれに、次のように単純化されたファイルがあります。

from google.appengine.api import taskqueue
import webapp2

class QueueScheduler(webapp2.RequestHandler):
    def get(self): #in real life, post, but this makes for an easier example
        taskqueue.add('path/to/myTask')

app = webapp2.WSGIApplication(('/myScheduler',QueueScheduler))

を呼び出すときtest.myApp.appspot.com/myScheduler、 を指すタスクを作成しますか、test.myApp.appspot.com/path/to/myTaskまたはmyApp.appspot.com/path/to/myTask(つまりproduction.myApp.appspot.com/path/to/myTask)へのタスクを作成しますか?

これをコードから制御する方法はありますか? 「キュー」と呼ばれる 3 番目のバックエンドがあるとします。上記のコードを変更する方法はtest.myAppp.appspot.com/mySchedulerありproduction.myApp.appspot.com/mySchedulerますqueues.myApp.appspot.com/mySchedulerqueues.myApp.appspot.com/path/to/myTask?

メタ: 念のために言うと、私が扱っている特定の問題は、私の会社がモバイル アプリに Web アプリとは異なるバージョンのコードを使用していることです。バージョン番号をアプリにハードコードして、更新をリリースしたときのデフォルトのバージョンをアプリが指すようにし、下位互換性のないリビジョンを作成できるようにします。また、ユーザーに表示されるインターフェイスを更新する前に、データ処理を更新したい場合もよくあります。インターフェイスへの変更を部分的に終了している間、またはコードの複数のブランチを一度に操作している間にデータ処理を修正していないことを確認する必要なく、これを実行できるソリューションを探しています。私達' アプリのデフォルト バージョンとレガシー バージョンの両方を呼び出して、クライアント向けの準備が整っていないバージョンでデータ処理を実行できるようにしたいと考えています。cron.yaml でタスクを作成し、そこにバージョンを設定することで、ライブに維持する必要があるすべてのデータの問題を解決できますが、特定のものについては、維持しないという問題よりも、複数のブランチで開発するプログラミングのオーバーヘッドが必要です。データをリアルタイムで。

4

2 に答える 2

3

add 関数のこのドキュメントでは、実際にはこの正確な主題をより適切に扱っています。

https://developers.google.com/appengine/docs/python/taskqueue/functions#add

引数を使用すると、target使用するバージョンを制御できるため、コードで一度設定すると、展開したすべてのバージョンに適用できます。これは、まさに私が質問したときに探していたものです。

つまり、デフォルトでは、タスクはタスクを開始する URL がオンになっているバックエンドで実行されますが、タスク キューが実行されるアプリのバージョンをコードから制御することができます。これを行うには、単に呼び出しますtaskqueue.add('/relative/path/to/task',target='queues')

于 2013-08-16T17:34:24.367 に答える
-3

あなたの答えはほとんどここにあります:

https://developers.google.com/appengine/docs/python/taskqueue/?hl=en#Python_Tasks_and_app_versions

于 2013-08-14T00:15:55.413 に答える