taskqueue パッケージ

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

はじめに

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

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

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

索引

変数
func Add(c context.Context, task *Task, queueName string) (*Task, error)
func AddMulti(c context.Context, tasks []*Task, queueName string) ([]*Task, error)
func Delete(c context.Context, task *Task, queueName string) error
func DeleteMulti(c context.Context, tasks []*Task, queueName string) error
func Lease(c context.Context, maxTasks int, queueName string, leaseTime int) ([]*Task, error)
func LeaseByTag(c context.Context, maxTasks int, queueName string, leaseTime int, tag string) ([]*Task, error)
func ModifyLease(c context.Context, task *Task, queueName string, leaseTime int) error
func Purge(c context.Context, queueName string) error
func QueueStats(c context.Context, queueNames []string) ([]QueueStatistics, error)
type QueueStatistics
type RetryOptions
type Task
    func NewPOSTTask(path string, params url.Values) *Task

変数

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 Add

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

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

func AddMulti

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

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

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 が返されます。

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 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 はキューからすべてのタスクを削除します。

func QueueStats

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

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

type 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 つのタスクキューに関する統計を表します。

type 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 を使用すると、タスクを再試行するかどうか、および試行の間のバックオフ間隔を制御できます。

type Task

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

    // Payload is the data for the task.
    // This will be delivered as the HTTP request body.
    // It is only used when Method is POST, PUT or PULL.
    // url.Values' Encode method may be used to generate this for POST requests.
    Payload []byte

    // Additional HTTP headers to pass at the task's execution time.
    // To schedule the task to be run with an alternate app version
    // or backend, set the "Host" header.
    Header http.Header

    // Method is the HTTP method for the task ("GET", "POST", etc.),
    // or "PULL" if this is task is destined for a pull-based queue.
    // If empty, this defaults to "POST".
    Method string

    // A name for the task.
    // If empty, a name will be chosen.
    Name string

    // Delay specifies the duration the task queue service must wait
    // before executing the task.
    // Either Delay or ETA may be set, but not both.
    Delay time.Duration

    // ETA specifies the earliest time a task may be executed (push queues)
    // or leased (pull queues).
    // Either Delay or ETA may be set, but not both.
    ETA time.Time

    // The number of times the task has been dispatched or leased.
    RetryCount int32

    // Tag for the task. Only used when Method is PULL.
    Tag string

    // Retry options for this task. May be nil.
    RetryOptions *RetryOptions
}

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

func NewPOSTTask

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

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

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

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

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