Tidsplaner
Sette et skript til å kjøre av seg selv — gjentakelser, bestemte tidspunkter i kalenderen, overvåkingsvinduer med validering, tidssoner og innhenting av kjøringer som uteble.
En tidsplan (cron) setter et skript til å kjøre av seg selv: hver dag kl. 07.00, hvert 15. minutt, siste fredag i måneden, eller hvert 5. minutt i et nattvindu til dagens arbeid er gjort. Ett skript kan ha flere tidsplaner, hver med sitt klokkeslett, sin tidssone og sine argumenter.
På denne siden bruker vi tidsplanen Indicadores diários i appen
Kundeadministrasjon, som kjører skriptet atualizar_indicadores hver dag
kl. 07.00 (tidssonen Europe/Lisbon).
Opprette og åpne tidsplaner
I sidetreet utvider du noden til skriptet. Linjen Tidsplaner viser hvor mange som finnes; under den vises hver tidsplan med navnet, klokkeslettet i kortform og, når den er slått av, merket (deaktivert).
- For å opprette: klikk på + på linjen Tidsplaner (Ny tidsplan). Editoren åpnes i en ny fane.
- For å redigere: klikk på navnet til tidsplanen.
- I menyen ⋮ til hver tidsplan finner du Aktiver/Deaktiver og Slett. Å slette stopper tidsplanen for godt, men historikken over kjøringer av skriptet blir liggende.

Editoren har skjemaet til venstre og panelet Kjøringer til høyre (først etter at den er lagret — se slutten av siden). Øverst slår bryteren Aktiv tidsplanen på og av, og Lagre lagrer alt.
Velge frekvensen
Feltet Frekvens tilbyr tre kort — tre slags tidsplaner:
| Kort | Passer til |
|---|---|
| Gjenta | «Hvert N. minutt eller hver N. time, uten stans.» Sondering, kontinuerlig synkronisering. |
| På bestemte tidspunkter | «På et klokkeslett i døgnet, på de dagene du velger.» Klassikeren: daglig, ukentlig, månedlig. |
| Overvåkingsvindu | «Sonder hvert N. minutt mellom to klokkeslett, og stopp når dagens arbeid er gjort.» |
Under kortene bytter snarveien Skriv uttrykket for hånd ut kontrollene
med et fritt cron-felt, Uttrykk — for den som allerede har ett. Det tar
imot 5 eller 6 felt (med sekunder), f.eks.: 0 9 * * 1-5. Tilbake til
kontrollene angrer byttet.
Gjenta
- Velg kortet Gjenta.
- Under Enhet velger du minutter eller timer.
- Med minutter angir du Hvor mange minutter mellom hver gang? (f.eks.
15). Med timer angir du På minuttet — minuttet i hver time den utløser
på (f.eks.
0kjører kl. 09.00, 10.00, 11.00 …).
På bestemte tidspunkter
Velg kortet På bestemte tidspunkter.
Under Gjentas velger du varianten:
Alternativ Feltene som dukker opp Hver dag (på de valgte dagene) Klokken + Dager — sju knapper (Man … Søn) med snarveiene Alle, Hverdager og Helg. Enhver kombinasjon duger: mandag, onsdag og fredag, for eksempel. Én gang i uken Klokken + Ukedag. Én gang i måneden Klokken + I måneden kjører den (se nedenfor). For det månedlige har I måneden kjører den tre former:
Alternativ Eksempel På en fast dag Den 1., den 15. … Med Dag i måneden over 28 sier editoren fra: «I måneder uten den dagen kjører den ikke. For «siste dag» bruker du det egne alternativet.» På en posisjon (f.eks. siste fredag) Posisjon (1., 2., 3., 4., 5. eller siste) + Ukedag — f.eks. den siste fredagen i måneden. På den siste dagen i måneden Den 31., 30., 28. eller 29. — det måneden nå har.
Tidssonen
Hver tidsplan har en Tidssone — klokkeslettene du angir er klokkeslett i
den sonen, ikke på serveren. Velgeren lister opp alle IANA-sonene, med
søk (f.eks. Lisbon, Sao_Paulo). En tidsplan kl. 09.00 i
America/Sao_Paulo kjører kl. 09.00 i São Paulo, selv med serveren i Europa
— og overgangene til og fra sommertid tar plattformen seg av.
Hvis en kjøring uteblir
Noen ganger passerer det avtalte klokkeslettet uten kjøring: serveren var slått av, den startet på nytt underveis, eller den forrige kjøringen pågikk fortsatt. Seksjonen Hvis en kjøring uteblir bestemmer hva som skjer med slike tilfeller:
| Alternativ | Følge |
|---|---|
| Ignorer | Henter ikke inn. Det registreres at kjøringen gikk tapt (statusen Tapt i panelet Kjøringer). |
| Bare den siste | Henter inn den siste som uteble; de tidligere registreres som tapte. |
| Alle | Henter inn alle som uteble, i den rekkefølgen de var planlagt. |
De innhentede kjøringene vises i historikken til skriptet med opphavet Innhenting.
Nota
I et overvåkingsvindu er enheten for innhenting dagen: å hente inn kjører dagens arbeid selv etter at vinduet er lukket — det gjentar ikke sonderingene én etter én.
Overvåkingsvindu
Det tredje kortet løser et mønster den klassiske cron-en ikke uttrykker: «fra kl. 18.00, prøv hvert 5. minutt; når du får det til, kjør én gang og stopp til i morgen». Typisk når du venter på at en fil skal komme, at en dagsavslutning skal bli ferdig i et annet system, eller at en tabell skal bli fylt.

Feltene:
| Felt | Hva det angir |
|---|---|
| Hver | Intervallet mellom sonderingene: 1, 2, 3, 5, 10, 15, 20 eller 30 minutter. |
| Fra / Til | Klokkeslettene da vinduet åpner og lukker, i den valgte sonen. |
| Dager | Ukedagene vinduet finnes på (de samme sju knappene og snarveiene). |
| Hvis et skript feiler, stopp resten av dagen | Slått på lukker en feil vinduet til dagen etter, i stedet for å fortsette å prøve. |
Uten mer enn dette kjører vinduet skriptet ved det første tikket hver dag og lukker til dagen etter. Den virkelige kraften ligger i valideringen:
Valideringsskriptet
Seksjonen Valideringsskript tar imot litt Python-kode som ved hver sondering avgjør om det alt går an å kjøre:
- Klikk på Legg til validering. En editor åpnes i en modal.
- Skriv en funksjon
main(input)som returnererTrue(klar — hovedskriptet kjører én gang og vinduet lukker til i morgen) ellerFalse(ikke ennå — den venter og prøver igjen ved neste intervall). - Bruk Test valideringen for å kjøre den med én gang, med argumentene til tidsplanen: du ser dommen (Kan kjøre (kjører 1×) eller Ikke ennå — venter), varigheten og loggene.
- Lukk modalen og klikk på Lagre i editoren til tidsplanen.
# Returnerer True når dagens fil har kommet fram til den interne FTP-en.
from api_manager import db
def main(input):
linha = db("Dados CRM").query_one(
"select count(*) as n from cargas_diarias where dia = date('now')"
)
return bool(linha and linha["n"] > 0)
Valideringen kjører i samme miljø som hovedskriptet: den får den samme
input (argumenter og kontekst), og har de samme filene, det samme
Python-miljøet og den samme SDK-en (db, http, log, …).
Dica
Å ha kode er å bruke valideringen — det finnes ingen bryter. For å slutte å validere klikker du på × (Fjern valideringen): koden slettes når du lagrer, og hovedskriptet kjører igjen ved det første tikket i vinduet.
Argumenter til tidsplanen
Seksjonen Argumenter angir navn/verdi-par som når skriptet i
input["args"] ved alle kjøringer av denne tidsplanen — akkurat som ved
manuell kjøring kommer verdiene som tekst. Det er slik det samme skriptet
tjener to ulike tidsplaner: en daglig exportar med {"ambito": "dia"} og
en månedlig med {"ambito": "mes"}, for eksempel.
Lagre, aktivere, følge med
- Lagre oppretter (eller oppdaterer) tidsplanen. Knappen blir først aktiv når navnet er fylt ut og klokkeslettet er gyldig.
- Bryteren Aktiv øverst slår på og av uten å slette noe — i treet viser en avslått tidsplan (deaktivert).
- En aktiv tidsplan på et skript i Utkast kjører ikke: tilfellene blir stående som Hoppet over, med merknaden «Skriptet er et utkast».
Panelet Kjøringer
Etter at den er lagret, viser høyresiden av editoren panelet Kjøringer — tidsplanen sett utenfra, oppdatert direkte:
- Den første linjen sier om planleggingsmotoren i installasjonen er i live («Planleggeren er aktiv · siste sjekk for N s siden»). Hvis den ikke kjører, dukker en tydelig advarsel opp — de planlagte klokkeslettene finnes, men ingen kommer til å innfri dem før planleggeren starter. Snakk da med den som administrerer installasjonen.
- Under den kommer listen over tilfeller — hvert avtalt klokkeslett og statusen til det:
| Status | Betyr |
|---|---|
| Gjenstår | Et klokkeslett i framtiden, ennå ikke innfridd. |
| Kjører | Kjøringen pågår akkurat nå. |
| Utført | Den kjørte. |
| Tapt | Den uteble, og retningslinjen er Ignorer (eller den var ikke lenger mulig å hente inn). Grunnen står på linjen. |
| Hoppet over | Den kom aldri i gang — f.eks. skript som utkast, eller overlapp med den forrige kjøringen. |
I en tidsplan med validering åpner et klikk på et tilfelle Forsøk på validering: hver sondering med dommen (klar, ikke ennå eller feil) og meldingen. Rekkene av «ikke ennå» vises sammenslått — «12 forsøk uten noe nytt» — så de tre linjene som betyr noe ikke drukner i mengden.

Vanlige spørsmål
Jeg satte den til den 31., og i noen måneder kjører den ikke. Det er oppførselen til På en fast dag: i måneder uten den dagen kjører den ikke — editoren sier fra når du velger 29, 30 eller 31. For «slutten av måneden» bruker du På den siste dagen i måneden.
Kjøringen kl. 09.00 kom opp som Hoppet over (overlapp). Den forrige kjøringen pågikk fortsatt da det nye klokkeslettet kom. Plattformen kjører aldri den samme tidsplanen to ganger samtidig. Skjer det ofte, utvider du intervallet eller reduserer arbeidet per kjøring.
Valideringen returnerte True, men hovedskriptet kjørte bare én gang — betingelsen er fortsatt sann.
Det er med vilje: når valideringen returnerer True, kjører hovedskriptet
én gang og vinduet lukker til dagen etter. Uten det ville en betingelse
som ble stående sann sette skriptet til å kjøre i løkke ut vinduet.
Klokka er stilt om (sommer-/vintertid) — må jeg justere tidsplanene? Nei. Klokkeslettene tolkes i Tidssonen til tidsplanen; omstillingen håndteres av plattformen.