0
我想開始幾個過程作爲給定主管的子女。重啓策略是one_for_one
根據我的需要,每一個終止的進程應該在給定的時間量(例如20秒)後重新啓動。erlang監督員重新啓動策略
這怎麼辦?也許延遲在初始化或在終止功能的組合:
Shutdown = brutal_kill | integer() >=0 | infinity
有沒有更好的方式來實現這一目標?
我想開始幾個過程作爲給定主管的子女。重啓策略是one_for_one
根據我的需要,每一個終止的進程應該在給定的時間量(例如20秒)後重新啓動。erlang監督員重新啓動策略
這怎麼辦?也許延遲在初始化或在終止功能的組合:
Shutdown = brutal_kill | integer() >=0 | infinity
有沒有更好的方式來實現這一目標?
請勿爲此使用init/1
。當init運行時,主管被阻塞。最好立即啓動這個過程,但是隻有等待20秒後才讓它自己註冊。您可以在init中使用簡單的erlang:send_after(..)
調用來觸發此啓動延遲。
我也不喜歡終止的事情。也許有一個關閉狀態,在終止之前,你會停留一段時間。這也許可以確保沒有別人跑你在做什麼。如果你正在控制何時關閉,我會建議你。只需進入該狀態,然後等待上述的定時器觸發。但請注意,此解決方案僅在寬限期後釋放外部資源(文件,ETS表,套接字) - 除非明確釋放。