taskqueue 패키지는 App Engine의 taskqueue 서비스용 클라이언트를 제공합니다. 애플리케이션은 이 서비스를 통해 사용자의 요청 범위 밖에서 작업을 수행할 수 있습니다.
Task는 수동으로 생성할 수도 있지만, 가장 일반적인 taskqueue 작업은 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가 반환됩니다. 각 태스크는 독립적으로 삭제됩니다. 다른 태스크가 성공적으로 삭제되더라도 특정 태스크가 삭제되지 않을 수 있습니다.
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는 기본값이 적용된 해당 Task를 반환하며, 원본이 비어 있으면 태스크의 Name 필드를 선택한 이름으로 설정합니다.
func AddMulti
AddMulti는 이름이 지정된 큐에 태스크를 여러 개 추가합니다. 큐 이름을 비워 두면 기본 큐가 사용됩니다. AddMulti는 기본값이 적용된 해당 Task의 슬라이스를 반환하며, 원본이 비어 있으면 각 태스크의 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를 전송하는 태스크를 만듭니다.