google.golang.org/appengine/taskqueue 包 (v1.6.8)

taskqueue 包为 App Engine 任务队列服务提供了客户端。使用此服务,应用可以执行用户请求以外的工作。

可以手动构建任务;或者,可以使用 NewPOSTTask,因为最常见的任务队列操作是添加单个 POST 任务,而 NewPOSTTask 可让您轻松添加 POST 任务。

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。 每个任务都会单独删除;可能出现某个任务删除失败,而其他任务删除成功的情况。

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 表示有关单个任务队列的统计信息。

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 请求处理程序的特殊 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 会解析可用于推送任务请求处理程序的特殊 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 会返回一个填充了默认值的等效任务,包括将任务的“名称”字段设置为所选名称(如果初始名称为空)。

func AddMulti

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

AddMulti 会将多个任务添加到命名的队列中。 如果队列名为空,则表示将使用默认队列。 AddMulti 会返回一部分填充了默认值的等效任务,包括将每个任务的“名称”字段设置为所选名称(如果初始名称为空)。 如果给定任务格式错误或无法添加,则会返回 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 会从队列租用任务(按标签分组)。 如果标签为空,则返回的任务按预计到达时间最早的任务的标签进行分组。leaseTime 以秒为单位。 提取的任务数不得超过最大 maxTasks。

func NewPOSTTask

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

NewPOSTTask 创建一个将使用给定表单数据对路径执行 POST 操作的任务。