Триггер HTTP облачных задач Google - как отключить повтор - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать очередь облачных задач, которая никогда не повторяется при сбое задачи 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.

Заранее спасибо.

...