2012-04-03 78 views
0

有没有办法在AWS SWF中终止/重新开始长时间运行的任务?有时我们的一些任务运行时间更长,我们希望手动终止某个任务(通过UI或编程方式)并在可能的情况下重新开始任务。如何实现这一目标?如何终止/重新开始长时间运行的任务

回答

0

控制台是手动杀死工作流的选项。

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

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

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

0

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

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

请参阅Error Handling关于AWS Flow Framework取消活动方式的AWS Flow Framework Developer Guide部分。

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