Repository navigation
agendador
Home > Colocar no ar > Agendador 🚧
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Vale para a 2.0 · Delphi XE em diante e Lazarus/FPC 3.2 em diante · Nível: básico
Em uma frase: o TRALScheduler roda tarefas por expressão cron ou a cada N
milissegundos, cada execução na sua thread, e começa e para junto com o servidor.
Você vai precisar: o pacote RALHostingPackage.
uses RALScheduler;
Agenda := TRALScheduler.Create(Self);
Agenda.Jobs.AddJob('limpeza', '0 3 * * *', Limpar); // todo dia às 03:00
Agenda.Jobs.AddInterval('pulso', 60000, Pulso).RunOnStart := True;
Agenda.Server := Servidor; // liga e desliga com o servidor
procedure TForm1.Limpar(AJob: TRALScheduledJob);
begin
while not Terminou and not AJob.Stopping do // Stopping: o servidor está parando
...
end;5 campos (minuto, hora, dia, mês, dia da semana) ou 6 com os segundos na frente;
*, listas (1,15), faixas (9-17), passos (*/15, 9-17/2), nomes (JAN,
MON-FRI), domingo é 0 ou 7. Apelidos: @yearly, @monthly, @weekly, @daily,
@hourly, @reboot (uma vez, ao ligar). Como no cron do POSIX, se dia e dia da
semana forem restritos, vale qualquer um dos dois.
| expressão | quando |
|---|---|
*/15 * * * * |
a cada 15 minutos |
0 3 * * 1 |
segunda às 03:00 |
30 9-17/2 * * MON-FRI |
09:30, 11:30... 17:30 nos dias úteis |
0 0 29 2 * |
29 de fevereiro (só nos anos bissextos) |
*/20 * * * * * |
a cada 20 segundos |
TRALCronExpression.Create(texto).NextAfter(Now) dá a próxima vez;
TRALCronExpression.IsValid(texto) só confere. Uma expressão inválida levanta
ERALException: [RAL 6404] (número de campos), 6405 (valor fora da faixa), 6406
(passo), 6407 (faixa invertida).
| propriedade | |
|---|---|
AllowOverlap |
False (padrão): se a execução anterior ainda roda, esta é pulada |
RunOnStart |
também roda ao ligar |
Enabled |
|
NextRun, LastRun, RunCount, Running
|
só leitura |
LastError, LastErrorTime
|
a última exceção (OnError do agendador avisa na hora) |
Parar o servidor (inclusive Shutdown) espera as execuções em curso. Para mostrar o
agendador no /health/ready, ligue Agenda.HealthCheck a um check do
plugin de saúde: um job cuja última execução falhou deixa o servidor "não
pronto".
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Objetos no corpo 🚧
- Resposta em fluxo 🚧
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
- Testes em memória 🚧
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar