이와 같이 간단한 스케줄러를 만들려면 위의 함수에서 보낸 메시지가 정보로 처리되기 때문에 예를 들어 Process.send_after
과 GenServer의 handle_info
을 결합하여 사용할 수 있습니다.
예 :
defmodule YourGenServer do
use GenServer
def init(initial_value) do
Process.send_after(self, :check_state, 1000 * 60 * 20) # 20 minutes delay
end
def handle_info(:check_state, state) do
# do the task
Process.send_after(self, :check_state, 1000 * 60 * 20)
end
end
더 나은 해결책은 무엇입니까? Tasks and Agents는 GenServers이기도하며, API가 단순합니다. 내 예제 GenServer에서 어떻게 보이는지 보여주기 위해 사용했습니다. 아마도 당신을위한 가장 좋은 아이디어는 서버의 콜백을 캡슐화 한 래퍼 (wrapper)를 사용하는 것입니다. 엔진을 변경하려면 원할하게 수행하십시오.
모니터 된'Task' 또는'GenServer'를 통해이 설명을 근거로 말하기는 어렵습니다. 나는 너무 광범위하게 질문을 끝내기로 표결했다. – mudasobwa