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
Delete 从已命名的队列中删除一个任务。
func DeleteMulti
DeleteMulti 会将多个任务从命名的队列中删除。 如果无法删除给定任务,则会返回 appengine.MultiError。 每个任务都会单独删除;可能出现某个任务删除失败,而其他任务删除成功的情况。
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 表示有关单个任务队列的统计信息。
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
Add 会将任务添加到命名的队列中。 如果队列名为空,则表示将使用默认队列。 Add 会返回一个填充了默认值的等效任务,包括将任务的“名称”字段设置为所选名称(如果初始名称为空)。
func AddMulti
AddMulti 会将多个任务添加到命名的队列中。 如果队列名为空,则表示将使用默认队列。 AddMulti 会返回一部分填充了默认值的等效任务,包括将每个任务的“名称”字段设置为所选名称(如果初始名称为空)。 如果给定任务格式错误或无法添加,则会返回 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 会从队列租用任务(按标签分组)。 如果标签为空,则返回的任务按预计到达时间最早的任务的标签进行分组。leaseTime 以秒为单位。 提取的任务数不得超过最大 maxTasks。
func NewPOSTTask
NewPOSTTask 创建一个将使用给定表单数据对路径执行 POST 操作的任务。