Я пытаюсь создать очередь облачных задач, которая никогда не повторяется при сбое задачи HTTP.
Согласно документации , maxAttempts должно быть тем, что я ищу:
Количество попыток на задачу.
Облачные задачи будут пытаться выполнить задачу maxAttempts раз (то есть, если первая попытка окажется неудачной, то будет maxAttempts - 1 повторная попытка).Должно быть> = -1.
Таким образом, если maxAttempts равно 1, должно быть 0 попыток.
Но, например, если я запускаю
gcloud tasks queues create test-queue --max-attempts=1 --log-sampling-ratio=1.0
, затем используйте следующий код Python для создания задачи HTTP:
from google.cloud import tasks_v2beta3
from google.protobuf import timestamp_pb2
client = tasks_v2beta3.CloudTasksClient()
project = 'project_id' # replace by real project ID
queue = 'test-queue'
location = 'us-central1'
url = 'https://example.com/task_handler' # replace by some endpoint that return 5xx status code
parent = client.queue_path(project, location, queue)
task = {
'http_request': { # Specify the type of request.
'http_method': 'POST',
'url': url # The full url path that the task will be sent to.
}
}
response = client.create_task(parent, task)
print('Created task {}'.format(response.name))
В журналах Stackdriver для очереди (что я вижу, потому что я использовал --log-sampling-ratio=1.0
при создании очереди), задачаочевидно, повторяется однажды: есть одна попытка отправки, после которой следует ответ отправки со статусом UNAVAILABLE, после чего следует еще одна попытка отправки, за которой наконец следует последний ответ отправки (также с указанием UNAVAILABLE).
Есть ли способповторить попытку 0 раз?
Примечание
О maxAttempts в документации также сказано:
Это поле имеет то же значение, что и task_retry_limit вqueue.yaml / xml.
Однако, когда я перехожу к описанию для task_retry_limit , оно говорит:
Количество повторных попыток.Например, если указано 0 и задача не выполняется, задача вообще не повторяется.Если указано 1 и задача не выполняется, она повторяется один раз.Если этот параметр не указан, задача повторяется бесконечно.Если значение task_retry_limit указано в параметре task_age_limit, задание повторяется до тех пор, пока не будут достигнуты оба предела.
Это кажется несовместимым с описанием maxAttempts, поскольку оно указывает, что задание будет повторено один раз, если параметрравно 1.
Я экспериментировал с установкой maxAttempts в 0, но это, кажется, заставляет его принять значение по умолчанию 100.
Заранее спасибо.