如何杀死/重新启动长时间运行的任务

时间:2012-04-03 19:17:52

标签: amazon-web-services amazon-swf

有没有办法在AWS SWF中终止/重新启动长时间运行的任务?有时我们的某些任务运行时间较长,我们希望手动终止某个任务(通过UI或以编程方式)并尽可能重新启动任务。怎么做到这一点?

2 个答案:

答案 0 :(得分:0)

控制台是手动终止工作流程的选项。

您还可以将超时设置为整个工作流程执行时间或单个活动。这可以在您注册活动或开始活动时设置(defaultTaskStartToCloseTimeoutSecond)。

目前尚不清楚您使用的是哪种语言。

如果您正在使用java,那么您应该在Flow Framework中查看Exponential Retry。如果失败,这会使SDK重新启动您的活动。

答案 1 :(得分:0)

预计长时间运行的活动会使用RecordActivityTaskHeartbeat进行心跳加速。如果活动进程挂起或崩溃,它会在短听觉间隔后导致超时失败,而不是长任务执行超时。

工作流程代码(决策者)始终可以通过RequestCancelActivityTask决定请求取消活动。取消请求作为RecordActivityTaskHeartbeat调用的输出返回。活动实施应取消自身并使用RespondActivityTaskCanceled API调用向服务报告。

有关AWS Flow Framework取消活动的方法,请参阅Error HandlingAWS Flow Framework Developer Guide部分。

有时,活动实施无法支持心跳和自我取消。解决方案是执行另一个终止第一个活动执行的 kill 活动。例如,在Unix下,这样的kill活动可以为实现第一个的进程发出“kill -9”命令。