パッケージ google.golang.org/appengine/taskqueue(v1.6.8)

taskqueue パッケージは、App Engine のタスクキュー サービス用のクライアントを提供します。アプリケーションはこのサービスを使用して、ユーザーのリクエスト外で作業を実行することがあります。

タスクは手動で構築できます。また、最も一般的な taskqueue オペレーションは 1 つの POST タスクの追加なので、NewPOSTTask を使用すると簡単に実行できます。

t := taskqueue.NewPOSTTask("/worker", url.Values{
    "key": {key},
})
taskqueue.Add(c, t, "") // add t to the default queue

変数

ErrTaskAlreadyAdded

var (
	// ErrTaskAlreadyAdded is the error returned by Add and AddMulti when a task has already been added with a particular name.
	ErrTaskAlreadyAdded = errors.New("taskqueue: task has already been added")
)

関数

func Delete

func Delete(c context.Context, task *Task, queueName string) error

Delete は名前付きキューからタスクを削除します。

func DeleteMulti

func DeleteMulti(c context.Context, tasks []*Task, queueName string) error

DeleteMulti は名前付きキューから複数のタスクを削除します。特定のタスクを削除できなかった場合、appengine.MultiError が返されます。各タスクは個別に削除されます。つまり、1 つのタスクの削除が失敗しても、他のタスクは正常に削除される場合があります。

func ModifyLease

func ModifyLease(c context.Context, task *Task, queueName string, leaseTime int) error

ModifyLease はタスクのリースを変更します。処理時間の増加や処理の中止をリクエストする場合に使用されます。leaseTime は秒単位で、負の値にはできません。

func Purge

func Purge(c context.Context, queueName string) error

Purge はキューからすべてのタスクを削除します。

QueueStatistics

type QueueStatistics struct {
	Tasks     int       // may be an approximation
	OldestETA time.Time // zero if there are no pending tasks

	Executed1Minute int     // tasks executed in the last minute
	InFlight        int     // tasks executing now
	EnforcedRate    float64 // requests per second
}

QueueStatistics は 1 つのタスクキューに関する統計を表します。

func QueueStats

func QueueStats(c context.Context, queueNames []string) ([]QueueStatistics, error)

QueueStats はキューに関する統計を取得します。

RequestHeaders

type RequestHeaders struct {
	QueueName          string
	TaskName           string
	TaskRetryCount     int64
	TaskExecutionCount int64
	TaskETA            time.Time

	TaskPreviousResponse int
	TaskRetryReason      string
	FailFast             bool
}

RequestHeaders は、タスクの HTTP リクエスト ハンドラの push に使用できる特別な HTTP リクエスト ヘッダーです。これらのヘッダーは App Engine によって内部的に設定されます。フィールドの詳細については、https://cloud.google.com/appengine/docs/standard/go/taskqueue/push/creating-handlers#reading_request_headers をご覧ください。

func ParseRequestHeaders

func ParseRequestHeaders(h http.Header) *RequestHeaders

ParseRequestHeaders は、タスク リクエスト ハンドラの push に使用できる特別な HTTP リクエスト ヘッダーを解析します。この関数は、誤った形式の値を通知なしで無視します。

RetryOptions

type RetryOptions struct {
	// Number of tries/leases after which the task fails permanently and is deleted.
	// If AgeLimit is also set, both limits must be exceeded for the task to fail permanently.
	RetryLimit int32

	// Maximum time allowed since the task's first try before the task fails permanently and is deleted (only for push tasks).
	// If RetryLimit is also set, both limits must be exceeded for the task to fail permanently.
	AgeLimit time.Duration

	// Minimum time between successive tries (only for push tasks).
	MinBackoff time.Duration

	// Maximum time between successive tries (only for push tasks).
	MaxBackoff time.Duration

	// Maximum number of times to double the interval between successive tries before the intervals increase linearly (only for push tasks).
	MaxDoublings int32

	// If MaxDoublings is zero, set ApplyZeroMaxDoublings to true to override the default non-zero value.
	// Otherwise a zero MaxDoublings is ignored and the default is used.
	ApplyZeroMaxDoublings bool
}

RetryOptions を使用すると、タスクを再試行するかどうか、および試行の間のバックオフ間隔を制御できます。

Task

type Task struct {
	// Path is the worker URL for the task.
	// If unset, it will default to /_ah/queue/

Task は実行されるタスクを表します。

func Add

func Add(c context.Context, task *Task, queueName string) (*Task, error)

Add は名前付きキューにタスクを追加します。キュー名が空の場合は、デフォルトのキューが使用されることを意味します。Add はデフォルト値が入力された同等のタスクを返します。タスクの Name フィールドは、元の名前が空であれば選択した名前に設定されます。

func AddMulti

func AddMulti(c context.Context, tasks []*Task, queueName string) ([]*Task, error)

AddMulti は名前付きキューに複数のタスクを追加します。キュー名が空の場合は、デフォルトのキューが使用されることを意味します。AddMulti はデフォルトが入力された同等のタスクのスライスを返します。各タスクの Name フィールドは、元の名前が空であれば選択した名前に設定されます。特定のタスクの形式が正しくないか、タスクを追加できない場合は、appengine.MultiError が返されます。

func Lease

func Lease(c context.Context, maxTasks int, queueName string, leaseTime int) ([]*Task, error)

Lease はキューからタスクをリースします。leaseTime は秒単位です。フェッチされるタスクの数は、最大で maxTasks の数になります。

func LeaseByTag

func LeaseByTag(c context.Context, maxTasks int, queueName string, leaseTime int, tag string) ([]*Task, error)

LeaseByTag はキューから、タグでグループ化されたタスクをリースします。タグが空の場合、返されるタスクは ETA が最も古いタスクのタグによってグループ化されます。leaseTime は秒単位です。フェッチされるタスクの数は、最大で maxTasks の数になります。

func NewPOSTTask

func NewPOSTTask(path string, params url.Values) *Task

NewPOSTTask は特定のフォームデータをパスに POST するタスクを作成します。