Agende tarefas com uma linha usando iris-cron-task
Oi pessoal!
Às vezes, preciso agendar uma tarefa programaticamente.
E em 99% preciso que algum método de classe seja chamado periodicamente.
E eu quero que a programação seja iniciada por uma linha. Como um trabalho no crontab.
Decidi apresentar esse módulo com o módulo iris-cron-task.
Veja os detalhes abaixo!
Instale o módulo com:
USER> zpm "install iris-cron-task"
E então você poderá agendar tarefas com uma linha.
Por exemplo, se eu quiser o seguinte comando:
set ^A($I(^A))=$H
ser iniciado a cada minuto, posso ligar para o seguinte:
zw ##class(dc.cron.task).Start("Task name","* * * * *","set ^A($I(^A))=$H",1,.taskid)
isso criará uma tarefa com taskid que será executada a cada minuto.
Quando você não precisar mais da tarefa, pode excluí-la com:
zw ##class(dc.cron.task).Kill(taskid)
Eu suportei apenas algumas configurações de cron, como a cada minuto:
* * * * *
Toda hora:
0 * * * *
E todos os dias em uma certa hora:
0 0 * * *
Você pode achar útil o site cronmaker para obter a expressão cron para qualquer programação de que precisar.
Obrigado a @Lorenzo Scalese por apresentar o suporte para uma expressão cron arbitrária.
PR são bem-vindos se você precisar de mais!
Espero que gostem, qualquer feedback é apreciado!
Verifique o aplicativo relacionado no InterSystems Open Exchange