Pular para conteúdo

Jobs recorrentes

SetRecurring agenda um job em uma especificação cron (sintaxe padrão de 5/6 campos, mais L, W, #, @every, ...), avaliada em um TZ dado, UTC quando omitido: 0 3 * * * sem kiln.TZ("America/Sao_Paulo") dispara à meia-noite em São Paulo. Misfire controla o que acontece com ocorrências perdidas enquanto nenhum servidor estava rodando: MisfireOnce (padrão, recupera uma vez), MisfireAll (roda toda ocorrência perdida, com um teto), ou MisfireSkip (descarta as antigas). Por padrão, ocorrências se sobrepõem: se uma execução ainda está rolando quando a próxima vence, a próxima é enfileirada de qualquer jeito. Passe kiln.Overlap(false) para jobs que não podem rodar duas vezes ao mesmo tempo, e a ocorrência é pulada em vez disso.

SyncRecurring declara um grupo de jobs recorrentes de uma vez: ele define os que recebe e remove os desse grupo que não estão mais lá, então excluir um agendamento do seu código exclui ele do store no próximo deploy. Jobs definidos com SetRecurring não pertencem a nenhum grupo e ficam intocados.

client.SyncRecurring(ctx, "reports",
    kiln.RecurringSpec{ID: "daily-sales", Spec: "0 7 * * *", Args: SalesReport{}, Options: []kiln.RecurringOption{kiln.TZ("America/Sao_Paulo")}},
    kiln.RecurringSpec{ID: "weekly-stock", Spec: "@weekly", Args: StockReport{}},
)