delay パッケージ

import "google.golang.org/appengine/delay"

はじめに

delay パッケージは、Task Queue API を使用して、ユーザー リクエストのスコープ外でコードを実行する方法を提供します。

後で実行可能な関数を宣言するには、最上位レベルの割り当てコンテキストで Func を呼び出し、任意の文字列キーと最初の引数が context.Context 型の関数を渡します。

var laterFunc = delay.Func("key", myFunc)

関数リテラルを使用することもできます。

var laterFunc = delay.Func("key", func(c context.Context, x string) {
    // ...
})

関数を呼び出すには、その関数を指定して Call メソッドを呼び出します。

laterFunc.Call(c, "something")

関数は任意の回数だけ呼び出すことができます。関数に戻り引数があり、最後の引数の型が error である場合、その関数は再試行する必要があることをキューに通知するために nil 以外のエラーを返すことができます。

関数には、gob パッケージでエンコード可能な任意の型の引数を指定できます。引数が interface 型で、gob パッケージへの登録がクライアント側の役割である場合、その引数には具体的な型であればどのようなものでも渡すことができます。詳細については、http://golang.org/pkg/gob/#Register をご覧ください。

関数の初期化中または実行中に発生したエラーは、アプリケーション ログに記録されます。初期化中に発生したエラーログは、その Call メソッドを呼び出したリクエストに関連付けられます。

まだ正常に実行されていない関数呼び出しの状態は、その関数の宣言が行われたファイルの名前と Func 関数に渡された文字列キーの組み合わせで保持されます。保留中の関数呼び出しを持つアプリの更新は、関連する関数でファイル名とキーの組み合わせが保持されている限り安全です。

delay パッケージは、Task Queue API を使用して、予約済みのアプリケーション パス「/_ah/queue/go/delay」を呼び出すタスクを作成します。このパスは、app.yaml で「login: required」とマーク付けしないでください。「login: admin」とマーク付けするか、アクセス制限を設定しないようにする必要があります。

目次

type Function
    func Func(key string, i interface{}) *Function
    func (f *Function) Call(c context.Context, args ...interface{}) error
    func (f *Function) Task(args ...interface{}) (*taskqueue.Task, error)

type Function

type Function struct {
    // contains filtered or unexported fields
}

Function は、遅延呼び出しを持つことができる関数を表します。

func Func

func Func(key string, i interface{}) *Function

Func は新しい関数を宣言します。2 番目の引数は、最初の引数が context.Context 型の関数でなければなりません。この関数は、プログラムの初期化時に呼び出す必要があります。つまり、グローバル変数の宣言時に呼び出すか、init 関数から呼び出す必要があります。関数呼び出しを遅延させるインスタンスが、その関数を実行するインスタンスであってはならないため、このような制限が必要となります。リクエストを受け取る前にインスタンスによって実行されていることが保証されるのは、プログラムの初期化時に実行されたコードだけです。

func (*Function) Call

func (f *Function) Call(c context.Context, args ...interface{}) error

Call は、遅延された関数を呼び出します。

err := f.Call(c, ...)

これは、次のステートメントと同等になります。

t, _ := f.Task(...)
_, err := taskqueue.Add(c, t, "")

func (*Function) Task

func (f *Function) Task(args ...interface{}) (*taskqueue.Task, error)

Task は、関数を呼び出すタスクを作成します。関数のパラメータは、キューに追加する前に調整することができます。返された Task の Path または Payload フィールドをユーザーが変更してはなりません。

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

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

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