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
Delete は名前付きキューからタスクを削除します。
func DeleteMulti
DeleteMulti は名前付きキューから複数のタスクを削除します。特定のタスクを削除できなかった場合、appengine.MultiError が返されます。各タスクは個別に削除されます。つまり、1 つのタスクの削除が失敗しても、他のタスクは正常に削除される場合があります。
func ModifyLease
ModifyLease はタスクのリースを変更します。処理時間の増加や処理の中止をリクエストする場合に使用されます。leaseTime は秒単位で、負の値にはできません。
func Purge
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
Add は名前付きキューにタスクを追加します。キュー名が空の場合は、デフォルトのキューが使用されることを意味します。Add はデフォルト値が入力された同等のタスクを返します。タスクの Name フィールドは、元の名前が空であれば選択した名前に設定されます。
func AddMulti
AddMulti は名前付きキューに複数のタスクを追加します。キュー名が空の場合は、デフォルトのキューが使用されることを意味します。AddMulti はデフォルトが入力された同等のタスクのスライスを返します。各タスクの Name フィールドは、元の名前が空であれば選択した名前に設定されます。特定のタスクの形式が正しくないか、タスクを追加できない場合は、appengine.MultiError が返されます。
func Lease
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
NewPOSTTask は特定のフォームデータをパスに POST するタスクを作成します。