【问题标题】:How to kill /re-start a long running task如何杀死/重新启动长时间运行的任务
【发布时间】:2012-04-03 19:17:52
【问题描述】:

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

【问题讨论】:

    标签: amazon-web-services amazon-swf


    【解决方案1】:

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

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

    不清楚您使用的是什么语言。

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

    【讨论】:

      【解决方案2】:

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

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

      有关取消活动的 AWS Flow Framework 方式,请参阅 AWS Flow Framework Developer GuideError Handling 部分。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多