2012-04-03 121 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」命令。