Saltar para o conteúdo principal
DocsExecutarExecuções agendadas

Execuções agendadas

Configurando os quatro tipos de programação—CRON / INTERVAL / ONE TIME / DELAYED COMPLETION—com o manuseio do fuso horário e gatilhos de workflow encadeados.

O programador de Braidrun suporta quatro tipos de gatilho: CRON (uma expressão recorrente), INTERVAL (um intervalo fixo), ONE TIME (um-off) e DELAYED COMPLETION (acorrentado de um workflow). Todos os horários são gerenciados centralmente pelo serviço de agendamento da plataforma e continuam disparando em seus próprios horários após um reinício do serviço.

Conceito: cronograma e execução

Cada gatilho cria uma execução. Uma programação é um objeto de longa duração, enquanto uma execução é um registro de execução única. Um escalonamento pode carregar um conjunto estático de entradas (pares de valor chave) que servem como variáveis de entrada da execução em cada gatilho.

Cada agenda armazena seu próprio fuso horário (um nome IANA como Ásia/Shanghai), e o servidor calcula os tempos de gatilho contra ele. Criando através da interface web padrão para o fuso horário atual de sua conta; ao criar através da API, sempre passe o fuso horário explicitamente.

Os Quatro tipos de programação

TipoCampos-chaveComportamento
CRONcronExpression, timezoneIncêndios recorrentemente por uma expressão de 5 campos de cron, granularidade até minuto
INTERVALinterval, startTime, endTimeDispara cada número fixo de milissegundos, com tempos de início e fim opcionais
ONE_TIMEstartTimeIncêndios uma vez na hora definida, em seguida, auto-desativações
DELAYED_COMPLETIONtriggerWorkflowId, delaySecondsFires N segundos após um workflow upstream terminar com sucesso, para cadeias de workflow

Os quatro tipos compartilham um conjunto comum de campos: habilitado (se ativo), maxRuns (máxima contagem de gatilho) e entradas (variáveis de entrada estáticas). Quando o endTime passou ou a contagem de gatilho atinge o maxRuns, o cronograma é desativado automaticamente, mas não excluído.

Criar uma agenda CRON

bash
curl -X POST https://braidrun.com/api/schedules \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "workflowId": "<workflow-id>",
    "name": "Daily 9 AM report",
    "scheduleType": "CRON",
    "cronExpression": "0 9 * * *",
    "timezone": "Asia/Shanghai",
    "inputs": {
      "environment": "production"
    }
  }'

A expressão cron é 5-campo: minuto hora dia-de-mês mês dia-de-semana. Ele suporta *, listas (1,3,5), intervalos (1-5), e passos (*/6); Domingo pode ser escrito como 0 ou 7. Os tempos de desencadeamento são calculados com base no fuso horário da programação.

expressãosignificado
0 9 * * *Todos os dias 09:00
0 9 * * 1-5Dias úteis 09:00
0 */6 * * *a cada 6 horas
30 14 1 * *14h30 do dia 1º de cada mês

Em uma implantação multi-instância, um bloqueio distribuído deduplica cada ponto de gatilho: apenas um nó realmente inicia a execução, então adicionar nós não causa gatilhos duplicados.

Interval: intervalo fixo

O corpo de solicitação vai para POST /api/agendas assim como CRON, apenas os campos diferem:

json
{
  "workflowId": "<workflow-id>",
  "name": "每 5 分钟同步一次",
  "scheduleType": "INTERVAL",
  "interval": 300000,
  "startTime": 1785542400000,
  "endTime": 1788220800000,
  "maxRuns": 500
}
  • interval — O intervalo de desencadeamento em milissegundos; valores abaixo de 1 segundo são elevados para 1 segundo
  • startTime / endTime — Opcional, um timestamp epoch-millisegundo; se o startTime for definido, ele espera até esse momento antes de começar, e ele se auto-desativa uma vez que o endTime passou
  • maxRuns — Opcional; desativa automaticamente após disparar tantas vezes

Tempo ÚNICO: único

json
{
  "workflowId": "<workflow-id>",
  "name": "上线前补跑一次",
  "scheduleType": "ONE_TIME",
  "startTime": 1785546000000
}

startTime é um timestamp epoch-millisegundo. Depois de disparar uma vez ao mesmo tempo, o agendamento desativa automaticamente; em uma implantação multi-instância, um bloqueio único garante que ele dispara apenas uma vez.

Agendamento acorrentado (DELAYED COMPLETION)

DELAYED COMPLETION encadeia dois workflows: cada workflow a montante A termina com o status COMPLETED, espera atrasoSegundos segundos e, em seguida, ativa automaticamente o workflow B ligado a este cronograma. Uso típico: execute o workflow do relatório automaticamente 10 minutos após o workflow de pull de dados terminar.

json
{
  "workflowId": "<workflow-B-id>",
  "name": "A 完成 10 分钟后跑 B",
  "scheduleType": "DELAYED_COMPLETION",
  "triggerWorkflowId": "<workflow-A-id>",
  "delaySeconds": 600,
  "maxRuns": 10
}
  • Conta se A foi acionado manualmente, pelo Webhook, por agendamento ou por uma cadeia – desde que termine com sucesso; as execuções falhadas ou canceladas não desencadeiam o a jusante
  • delaySeconds — Necessário, 0 a 30 dias (2592000 segundos); 0 significa gatilho imediatamente após a conclusão
  • maxRuns — Omitir para ilimitado; 1 cadeias apenas uma vez; N cadeias no máximo N vezes, em seguida, auto- desactivações
  • triggerWorkflowId — Ele não pode igualar workflowId (self-triggering seria loop para sempre), e o criador precisa de permissão de visualização no workflow upstream
  • Os gatilhos atrasados pendentes são armazenados de forma duradoura e sobrevivem a um serviço de reiniciar ou rolar liberação: eles disparam como de costume quando chega a hora

Gerenciando agendamentos

Ponto finalObjecto
GET /api/schedulesListar todos os escalonamentos visíveis
GET /api/schedules/{id}Ver um único
PUT /api/schedules/{id}Atualizar; os campos são os mesmos que para criação, e mudar o tipo revalida em relação ao novo tipo
DELETE /api/schedules/{id}Apagar
POST /api/schedules/{id}/toggleActivar / desactivar
POST /api/schedules/{id}/runExecutar uma vez imediatamente, ignorando o cronograma
GET /api/schedules/{id}/historyHistórico do gatilho
GET /api/schedules/workflows/{workflowId}Listar todos os escalonamentos sob um determinado workflow
bash
# 立即执行一次(返回这次 execution)
curl -X POST https://braidrun.com/api/schedules/<schedule-id>/run \
  -H "Authorization: Bearer <token>"

# 停用(enabled=true 则启用;不带参数则在两者间切换)
curl -X POST "https://braidrun.com/api/schedules/<schedule-id>/toggle?enabled=false" \
  -H "Authorization: Bearer <token>"

# 最近 50 条触发历史
curl "https://braidrun.com/api/schedules/<schedule-id>/history?limit=50" \
  -H "Authorization: Bearer <token>"

alternância ativada pode ir em um parâmetro de consulta ou no corpo JSON; se nenhum for passado, ele gira entre habilitado e desativado. Cada registro de histórico inclui o status, a bandeira de sucesso, e os tempos de início e fim; limite os padrões para 50, max 500.

Entradas compartilhadas e predefinições de parâmetros

Além de definir entradas diretamente em um cronograma, você pode criar "parametros predefinidos" para um workflow: execute o mesmo workflow sob diferentes predefinições para diferentes configurações.

bash
# 创建一个参数预设
curl -X POST https://braidrun.com/api/workflows/<wf>/presets \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "生产环境",
    "description": "生产环境参数",
    "variables": {
      "environment": "production",
      "debug_mode": "false",
      "max_retries": "3"
    }
  }'

# 用预设触发执行
curl -X POST https://braidrun.com/api/workflows/<wf>/presets/<id>/execute \
  -H "Authorization: Bearer <token>"

Simultaneidade em lote de vários workflows

Selecione vários itens da lista de workflow e clique em “Execução Simultânea” para iniciar um lote de execuções por vez.

  • Cada workflow selecionado criará seu próprio registro de execução
  • A execução que exceder maxConcurrency entrará primeiro em PENDING
  • Depois que a execução anterior for concluída, a próxima na fila será automaticamente convertida para RUNNING
  • 0 Não indica limite e inicia o lote inteiro ao mesmo tempo

A simultaneidade no nível superior do workflow controla a simultaneidade da mesma camada no DAG interno de um único workflow;

Comportamento após reinicialização do serviço

  • Execução acionada: O padrão é INTERROMPIDO, a menos que a continuação automática esteja habilitada (consulteReiniciar e retomar automaticamente
  • CRON / INTERVAL / ONE TIME agendas que não vieram devido: fogo como de costume após um reinício
  • Pendente DELAYED COMPLETION adiados gatilhos: já persistiu, eles continuam esperando e disparar a tempo após um reinício
  • Pontos de gatilho perdidos durante o tempo de inatividade: sem maquiagem (para evitar o risco de escrita dupla)

Páginas relacionadas