google.appengine.ext.deferred.deferred モジュール

概要

タスクキューを介してコーラブルの遅延実行を処理するモジュール。

タスクは、コーラブルとそれに渡す引数で構成されます。コーラブルとその引数はシリアル化されてタスクキューに入れられます。それらをシリアル化解除して実行します。次のコーラブルをタスクとして使用できます。

  1. モジュールのトップレベルで定義された関数

  2. モジュールのトップレベルで定義されたクラス

  3. __call__ を実装している(2)のクラスのインスタンス

  4. (2)のクラスのオブジェクトのインスタンス メソッド

  5. (2)のクラスのクラスメソッド

  6. 組み込みの関数

  7. 組み込みのメソッド

コーラブルをタスクとして使用することはできません 1)ネストされた関数またはクロージャ 2)ネストされたクラスまたはそのオブジェクト 3)ラムダ関数 4)静的メソッド

コーラブルやオブジェクト(メソッドまたはオブジェクトの呼び出しの場合)に対するすべての引数は、ピクル可能でなければなりません。

タスク実行の信頼性を高めるには、変更可能なグローバル変数を使用しないでください。変更可能なグローバル変数はタスクとシリアル化されておらず、タスクの実行時とキューに入れられたときでは同じではない場合があります(実際には、ほとんどの場合に異なる)。

アプリケーションがインポートパスの操作に依存している場合は、遅延させる関数が、インポートパスの操作なしで見つかるモジュールで定義されていることを確認してください。あるいは、以下で説明する簡単なインストール方法を使用する代わりに、独自の webapp アプリケーションに deferred.TaskHandler を含めることができます。

deferred.defer を使用して遅延タスクを作成すると、タスクがシリアル化され、タスクキューに直接追加することが試行されます。タスクが大きすぎる(シリアル化時に約 10 キロバイトより大きい)場合、タスク用のデータストア エントリが作成され、新しいタスクがキューに入れられ、データストアから元のタスクがフェッチされて実行されます。これは、直接実行モデルよりもはるかに効率が悪いため、可能な限りタスクのサイズを最小限に抑えることをおすすめします。

タスクを処理するには、ハンドラを設定する必要があります。app.yaml ハンドラ セクションに以下を追加します。

ハンドラ: - url: /_ah/queue/deferred

スクリプト: $PYTHON_LIB/google/appengine/ext/deferred/handler.py login: admin

デフォルトでは、遅延モジュールで上記の URL とデフォルトのキューを使用します。

使用例:

def do_something_later(key, amount):

entity = MyModel.get(key) entity.total += amount entity.put()

# デフォルトの URL とキュー名を使用し、タスク名は使用せず、すぐに実行します。 deferred.defer(do_something_later, my_key, 20)

# デフォルト以外のタスクキュー引数を指定します deferred.defer(do_something_later, my_key, 20, _queue=”foo”, _countdown=60)

内容

例外 google.appengine.ext.deferred.deferred.Error ソース

ベース: exceptions.Exception

このモジュールの例外の基本クラスです。

例外 google.appengine.ext.deferred.deferred.PermanentTaskFailure ソース

ベース: google.appengine.ext.deferred.deferred.Error

タスクが失敗し、その後も成功しないことを示します。

例外 google.appengine.ext.deferred.deferred.SingularTaskFailure ソース

ベース: google.appengine.ext.deferred.deferred.Error

タスクが一度失敗したことを示します。

クラス google.appengine.ext.deferred.deferred.TaskHandler ソース

ベース: google.appengine.ext.webapp._webapp25.RequestHandler

遅延呼び出しを処理するウェブ アプリケーション ハンドラ クラス。

post() ソース
run_from_request() ソース

遅延リクエスト ハンドラに対する POST リクエストのデフォルトの動作。

google.appengine.ext.deferred.deferred.defer(obj, *args, **kwargs) ソース

コーラブルの実行を遅延させ、後で実行されるようにします。

代替 URL が明示的に指定されていない限り、/_ah/queue/deferred のデフォルトの遅延 URL が使用されます。キューのデフォルト URL を使用する場合は、_url=None を指定します。別の URL を指定する場合は、その URL にハンドラをインストールする必要があります(詳細については、モジュール docstring をご覧ください)。

パラメータ
  • obj – 実行するコーラブル。制限については、モジュール docstring をご覧ください。 _countdown、_eta、_headers、_name、_target、_transactional、_url、_retry_options、_queue: タスクキューに渡されます。詳細はタスクキューのドキュメントを参照してください。

  • args – コーラブルを呼び出す際に渡す位置引数。

  • kwargs – 他のあらゆるキーワード引数がコーラブルに渡されます。

戻り値

キューに入れられたコーラブルを表す taskqueue.Task オブジェクト。

google.appengine.ext.deferred.deferred.invoke_member(obj, membername, *args, **kwargs) ソース

オブジェクトのメンバーを取得し、指定された引数でそのメンバーを呼び出します。

パラメータ
  • obj – 操作対象のオブジェクト。

  • membername – ojb から検索するメンバーの名前。

  • args – メソッドに渡す位置引数。

  • kwargs – メソッドに渡すキーワード引数。

戻り値

メソッド呼び出しの戻り値。

google.appengine.ext.deferred.deferred.main() ソース
google.appengine.ext.deferred.deferred.run(data) ソース

ピクルを解除してタスクを実行します。

パラメータ

data – 実行対象となる (function, args, kwargs) のタプルがピクルされたもの。

戻り値

関数呼び出しの戻り値。

google.appengine.ext.deferred.deferred.run_from_datastore(key) ソース

データストアからタスクを取得して実行します。

パラメータ

key – タスクを格納する _DeferredTaskEntity のデータストア キー。

戻り値

関数呼び出しの戻り値。

google.appengine.ext.deferred.deferred.serialize(obj, *args, **kwargs) ソース

遅延エグゼキュータによって認識される形式でコーラブルをシリアル化します。

パラメータ
  • obj – シリアル化するコーラブル。制限については、モジュール docstring をご覧ください。

  • args – コーラブルを呼び出す際に渡す位置引数。

  • kwargs – コーラブルを呼び出す際に渡すキーワード引数。

戻り値

コーラブルのシリアル化された表現。

google.appengine.ext.deferred.deferred.set_log_level(log_level) ソース

通常の状況下でログに記録されるログレベルを設定します。

パラメータ

log_level – 1 つのロギング ログ レベル。logging.DEBUG、logging.INFO など。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境