Как убить / перезапустить долгосрочное задание - PullRequest
0 голосов
/ 03 апреля 2012

Есть ли способ убить / перезапустить долгосрочную задачу в AWS SWF?Иногда некоторые из наших задач выполняются дольше, и мы хотели бы вручную убить определенную задачу (через пользовательский интерфейс или программно) и перезапустить задачу, если это возможно.Как этого добиться?

Ответы [ 2 ]

0 голосов
/ 05 января 2013

Ожидается, что длительное действие будет пульсировать, используя RecordActivityTaskHeartbeat .Это приводит к сбою тайм-аута после короткого интервала ожидания, а не к длительному таймауту выполнения задачи, если процесс активности зависает или происходит сбой.

Код рабочего процесса (решатель) всегда может запросить отмену действия с помощью RequestCancelActivityTask решения.Запрос на отмену возвращается как результат вызова RecordActivityTaskHeartbeat .Реализация действия должна отменить себя и сообщить службе, используя RespondActivityTaskCanceled вызов API.

См. Обработка ошибок раздел Руководство разработчика AWS Flow Framework для способа отмены действий AWS Flow Framework.

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

0 голосов
/ 01 декабря 2012

Консоль - это опция для ручного уничтожения рабочего процесса.

Вы также можете установить тайм-ауты на все время выполнения рабочего процесса или на отдельные действия. Это может быть установлено, когда вы регистрируете свою деятельность или когда вы начинаете свою деятельность (defaultTaskStartToCloseTimeoutSecond).

Непонятно, какой язык вы используете.

Если вы используете Java, то вам следует изучить Экспоненциальная повторная попытка в Flow Framework. Это заставит SDK перезапустить вашу деятельность, если она потерпит неудачу.

...