Удаление задачи Google Cloud не останавливает выполнение задачи

У меня есть очередь задач, в которую пользователи могут отправлять задачи, единовременно может выполняться только одна задача, установленная параметром параллелизма для очереди. В некоторых случаях (например, долго выполняющаяся задача) они могут пожелать отменить выполняющуюся задачу, чтобы освободить очередь для обработки следующей задачи.

Для этого я запускал очередь задач как приложение Flask, если пользователь желает отменить задачу, я вызываю delete_task клиентской библиотеки Python для данной очереди и задачи.

Однако я вижу, что основная задача продолжает обрабатываться даже после удаления задачи. Пытались найти документацию о том, как Cloud Tasks обрабатывает удаляемую задачу, но не нашли ничего конкретного.

Надеясь, что я смогу прослушать какой-то сигнал, чтобы изящно завершить процесс, если будет получено удаление. Или что базовый процесс будет убит, если будет удалена родительская задача.

Кто-нибудь раньше работал с Cloud Tasks API? Правильно ли предположить, что удаленная задача очистит все запущенные процессы?


person Tom    schedule 04.07.2020    source источник
comment
Где вы видите, что основная задача продолжает обрабатываться даже после удаления задачи? В облачной задаче? Или по вызываемой системе? Можете ли вы также указать тип задачи (HTTP или AppEngine)?   -  person guillaume blaquiere    schedule 04.07.2020
comment
В облачной задаче HTTP Push, удаление задачи во время отправки останавливает базовое HTTP-соединение? А как насчет движка приложений?   -  person Benos    schedule 20.07.2020


Ответы (1)


Я не понимаю, как работник сможет узнать, что задача, над которой он работает, удалена.

В глазах рабочего задача - это входящий Http-запрос. Я не знаю, как очередь могла сказать, что этот конкретный процесс остановился. Я почти уверен, что удаление задачи просто удаляет ее только из очереди.

Вам нужно будет создать специальную функцию отмены, которая сможет связаться с этим работником.

Или этому рабочему придется периодически проверять очередь, чтобы узнать, существует ли его задача. https://cloud.google.com/tasks/docs/reference/rest/v2/projects.locations.queues.tasks/get https://googleapis.dev/python/cloudtasks/latest/gapic/v2/api.html#google.cloud.tasks_v2.CloudTasksClient.get_task

Я не совсем уверен, что вернет очередь, если вы попытаетесь вызвать «получить задачу» удаленной задачей, поскольку я не вижу свойства «статус» для задачи. Возможно, он вернет ошибку типа «задача не существует»

person Alex    schedule 10.09.2020