Agendas do Task Scheduler¶
A partir da versão 0.3.0a5, quando um bot é iniciado pelo Agendador de Tarefas do Windows, o jaylog identifica as tasks ativas que executam aquele bot e envia suas agendas uma vez por processo para POST /logs/host-schedules.
O backend substitui atomicamente as agendas sincronizadas anteriores daquele serviço. Assim, editar uma task no Windows e executar o bot novamente atualiza a visão de agendas sem acumular linhas antigas.
Quando a coleta acontece¶
A coleta só roda quando todas estas condições são verdadeiras:
- o sistema é Windows;
- a cadeia de processos indica que o bot veio do Task Scheduler;
- o envio HTTP tem
JAYLOG_LOG_HTTP_ENDPOINTeJAYLOG_LOG_HTTP_API_KEYconfigurados; - há uma task ativa que pode ser associada ao entrypoint atual.
Ela é executada dentro de uma thread daemon. O configure() não espera pelo comando schtasks, e falhas de leitura, XML, permissão ou rede não atrasam nem interrompem o bot.
Como uma task é associada ao bot¶
O jaylog compara o arquivo que iniciou o processo, e não apenas a pasta. Isso evita atribuir ao bot a agenda de outro script no mesmo diretório.
Dois formatos de action Exec são suportados:
| Formato | Exemplo | Como é associado |
|---|---|---|
| Script direto | python.exe main.py, com Iniciar em C:\bots\faturamento |
O primeiro argumento .py ou .pyw é resolvido contra Iniciar em e comparado ao entrypoint. Caminhos absolutos e executáveis congelados também são aceitos. |
.bat ou .cmd |
C:\bots\faturamento\run.bat |
A pasta do batch — ou Iniciar em — precisa ser a pasta do entrypoint. Quando o arquivo pode ser lido, ele também precisa mencionar o nome do script, como main.py. |
Se um .bat/.cmd não puder ser lido (por exemplo, por permissão), a coincidência da pasta é suficiente. Variáveis de ambiente, aspas, diferenças de maiúsculas/minúsculas e a barra final de Iniciar em são normalizadas antes da comparação.
Triggers representados¶
O backend recebe uma combinação de Repetição, Granularidade e Horário. O jaylog só envia triggers que consegue representar exatamente.
| Configuração no Agendador | Agenda enviada |
|---|---|
| Diário às 08:00 | DIARIO — 08:00 |
| Semanal, segunda/quarta/sexta às 07:30 | Uma linha SEMANA para cada dia, às 07:30 |
| Mensal, dias 5 e 20, todos os meses, às 09:00 | Uma linha DIA para cada dia do mês, às 09:00 |
| Diário às 08:00, repetir a cada 30 min por 10 h | Horários diários de 08:00 até 17:30 |
| Semanal, segunda às 22:00, repetir de hora em hora por 4 h | Segunda 22:00/23:00 e terça 00:00/01:00 |
| Mensal, dia 10 às 06:00, repetir a cada 2 h por 12 h | Dia 10, de 06:00 até 16:00 |
| Uma vez às 08:00, repetir de hora em hora sem duração | Agenda diária, com os 24 horários |
| Ao iniciar o computador ou ao fazer logon | CONTINUO |
Para uma repetição por intervalo, cada disparo é expandido em horários. Se houver mais de 24 horários em um dia de calendário, o trigger é representado como CONTINUO. Se qualquer task correspondente for contínua, ela prevalece sobre as demais agendas do serviço.
Horários de StartBoundary com Z ou offset são convertidos para o fuso local da máquina. Uma EndBoundary já vencida e triggers explicitamente desabilitados não são enviados.
Triggers e configurações ignorados¶
O jaylog nunca aproxima uma agenda. O trigger inteiro é ignorado quando ele não tem uma representação exata, incluindo:
- diário com intervalo de dias maior que 1, ou semanal com intervalo de semanas maior que 1;
- mensal com apenas parte dos meses, último dia do mês ou "primeira segunda"/outro dia da semana ordinal;
- trigger de uma vez sem repetição, ou com repetição de duração finita;
- repetição mensal que cruza meia-noite;
- repetição indefinida cujo intervalo não forma horários fixos diários;
- atraso aleatório (
RandomDelay), idle, evento, registro ou mudança de sessão; - elementos desconhecidos no trigger.
Tasks em \Microsoft\... e tasks desabilitadas também são descartadas. Uma task pode ter várias actions e vários triggers: basta uma action executar o bot; um trigger inválido não descarta os demais triggers válidos da mesma task.
Configuração¶
Não há variável obrigatória nova para o caso comum. Com o endpoint de logs configurado, o endpoint de agendas é derivado automaticamente:
| Variável | Padrão | Descrição |
|---|---|---|
JAYLOG_HOST_SCHEDULE_ENABLED |
true |
Liga o envio de agendas. Só tem efeito no Windows, quando iniciado pelo Task Scheduler. |
JAYLOG_HOST_SCHEDULE_HTTP_ENDPOINT |
derivado | Override da URL de POST /logs/host-schedules. |
JAYLOG_HOST_SCHEDULE_TIMEOUT |
10 |
Timeout, em segundos, de schtasks /query /xml. |
Exemplo para desativar apenas essa sincronização:
Falhas e limites¶
| Situação | Comportamento |
|---|---|
schtasks ausente, timeout, erro de permissão ou XML inválido |
Nenhuma lista vazia é enviada — as agendas já existentes no backend são preservadas — e há um aviso único com o prefixo [jaylog] schedule:. |
| Nenhuma task corresponde ao bot, ou nenhum trigger é representável | Nada é enviado. |
| Mais de 500 linhas após a consolidação | Nada é enviado e o jaylog avisa; o teto protege o contrato HTTP. |
Rede fora, 429 ou 5xx |
O reporter reutiliza as tentativas com backoff do registro de ambiente. |
Backend sem a rota (404/405) |
O envio de agendas é desativado para o processo, com um aviso. |
Credencial ou payload recusado (401, 403, 422) |
O envio é desativado para o processo, com um aviso. |
O envio é único por processo: agendas não são reenviadas quando o backend pede o reenvio do Registro de Ambiente, porque esse pedido se refere apenas à identidade da execução.
Próximo passo¶
Veja também Métricas de Recursos e Secrets em Produção para completar a configuração de produção.