KEPLIN Docs

Planningen

Een script zelfstandig laten draaien — herhalingen, vaste momenten in de kalender, bewakingsvensters met validatie, tijdzones en het inhalen van gemiste uitvoeringen.

Een planning (cron) laat een script zelfstandig draaien: elke dag om 7.00 uur, om de 15 minuten, op de laatste vrijdag van de maand, of om de 5 minuten in een nachtelijk venster totdat het werk van de dag klaar is. Eén script kan meerdere planningen hebben, elk met een eigen tijdschema, tijdzone en argumenten.

Op deze pagina gebruiken we de planning Indicadores diários van de app Klantenbeheer, die het script atualizar_indicadores elke dag om 7.00 uur laat draaien (tijdzone Europe/Lisbon).

Planningen aanmaken en openen

Klap in de boomstructuur van de zijbalk de knoop van het script uit. De regel Planningen toont hoeveel er zijn; daaronder verschijnt elke planning met haar naam, het samengevatte tijdschema en, wanneer ze uit staat, het label (uitgeschakeld).

  • Aanmaken: klik op de + van de regel Planningen (Nieuwe planning). De editor opent in een nieuw tabblad.
  • Bewerken: klik op de naam van de planning.
  • In het menu van elke planning vindt u Inschakelen/Uitschakelen en Verwijderen. Verwijderen stopt de planning voorgoed, maar de geschiedenis van de uitvoeringen van het script blijft bestaan.

De planning Indicadores diários — elke dag om 07:00 (Europe/Lisbon), met het paneel Uitvoeringen aan de rechterkant.
De planning Indicadores diários — elke dag om 07:00 (Europe/Lisbon), met het paneel Uitvoeringen aan de rechterkant.

De editor heeft het formulier links en het paneel Uitvoeringen rechts (alleen nadat er is opgeslagen — zie het einde van de pagina). Bovenaan zet de schakelaar Actief de planning aan en uit, en Opslaan slaat alles op.

De frequentie kiezen

Het veld Frequentie biedt drie kaarten — drie soorten planningen:

Kaart Dient voor
Herhalen "Om de N minuten of uren, zonder ophouden." Peilingen, doorlopende synchronisaties.
Op vaste momenten "Op een tijdstip van de dag, op de dagen die u kiest." De klassieker: dagelijks, wekelijks, maandelijks.
Bewakingsvenster "Peilt om de N minuten tussen twee tijdstippen en stopt zodra het werk van de dag klaar is."

Onder de kaarten verruilt de snelkoppeling De expressie met de hand schrijven de instellingen voor een vrij veld Expressie met een cron-expressie — voor wie er al een meebrengt. Het accepteert 5 of 6 velden (met seconden), bijv.: 0 9 * * 1-5. Terug naar de instellingen maakt de ruil ongedaan.

Herhalen

  1. Kies de kaart Herhalen.
  2. Kies bij Eenheid voor minuten of uren.
  3. Met minuten stelt u Om de hoeveel minuten? in (bijv. 15). Met uren stelt u Op minuut in — de minuut van elk uur waarop hij afgaat (bijv. 0 draait om 9.00, 10.00, 11.00 uur…).

Op vaste momenten

  1. Kies de kaart Op vaste momenten.

  2. Kies bij Herhaalt de variant:

    Optie Velden die verschijnen
    Elke dag (op de gekozen dagen) Om (het tijdstip) + Dagen — zeven knoppen (Ma…Zo) met de snelkoppelingen Alle, Werkdagen en Weekend. Elke combinatie kan: maandag, woensdag en vrijdag, bijvoorbeeld.
    Eén keer per week Om + Dag van de week.
    Eén keer per maand Om + In de maand draait hij (zie hieronder).
  3. Voor de maandelijkse variant heeft In de maand draait hij drie vormen:

    Optie Voorbeeld
    Op een vaste dag Dag 1, dag 15… Bij een Dag van de maand boven de 28 waarschuwt de editor: "In maanden zonder die dag draait hij niet. Gebruik voor «de laatste dag» de aparte optie."
    Op een positie (bijv. laatste vrijdag) Positie (1e, 2e, 3e, 4e, 5e of laatste) + Dag van de week — bijv. de laatste vrijdag van de maand.
    Op de laatste dag van de maand 31, 30, 28 of 29 — wat de maand ook heeft.

De tijdzone

Elke planning heeft een Tijdzone — de tijdstippen die u instelt, zijn tijdstippen in die tijdzone, niet die van de server. De keuzelijst toont alle IANA-tijdzones, met zoekfunctie (bijv. Amsterdam, Sao_Paulo). Een planning om 9.00 uur in America/Sao_Paulo draait om 9.00 uur in São Paulo, ook al staat de server in Europa — en de overgang naar zomertijd neemt het platform voor zijn rekening.

Als een uitvoering wordt gemist

Soms gaat het geplande tijdstip voorbij zonder uitvoering: de server stond uit, herstartte halverwege, of de vorige uitvoering was nog bezig. De sectie Als een uitvoering wordt gemist bepaalt wat er met die gevallen gebeurt:

Optie Gevolg
Negeren Haalt niets in. Het missen wordt wel vastgelegd (status Gemist in het paneel Uitvoeringen).
Alleen de meest recente Haalt de laatste gemiste uitvoering in; de eerdere worden als gemist vastgelegd.
Alle Haalt alle gemiste uitvoeringen in, in de volgorde waarin ze gepland stonden.

De ingehaalde uitvoeringen verschijnen in de geschiedenis van het script met de oorsprong Inhaalslag.

Nota

Bij een bewakingsvenster is de eenheid van het inhalen de dag: inhalen voert het werk van de dag uit, ook nadat het venster is gesloten — het herhaalt de peilingen niet stuk voor stuk.

Bewakingsvenster

De derde kaart lost een patroon op dat de klassieke cron niet kan uitdrukken: "probeer het vanaf 18.00 uur om de 5 minuten; zodra het lukt, draai één keer en stop tot morgen". Typisch om te wachten tot een bestand binnenkomt, tot een dagafsluiting in een ander systeem klaar is, of tot een tabel gevuld is.

Een planning met een Bewakingsvenster — interval, tijdstippen van het venster, dagen en het inhaalbeleid.
Een planning met een Bewakingsvenster — interval, tijdstippen van het venster, dagen en het inhaalbeleid.

De velden:

Veld Wat dat bepaalt
Elke Het peilinterval: 1, 2, 3, 5, 10, 15, 20 of 30 minuten.
Van / Tot De tijdstippen waarop het venster opent en sluit, in de gekozen tijdzone.
Dagen De dagen van de week waarop het venster bestaat (dezelfde zeven knoppen en snelkoppelingen).
Als een script een fout geeft, de rest van de dag stoppen Aan: een fout sluit het venster tot de volgende dag in plaats van te blijven proberen.

Zonder verdere instellingen voert het venster het script uit bij de eerste tik van elke dag en sluit het tot de volgende dag. De echte kracht zit in de validatie:

Het validatiescript

De sectie Validatiescript accepteert een kleine hoeveelheid Python-code die bij elke peiling beslist of het al mag draaien:

  1. Klik op Validatie toevoegen. Er opent een editor in een venster.
  2. Schrijf een functie main(input) die True teruggeeft (gereed — het hoofdscript draait één keer en het venster sluit tot morgen) of False (nog niet — het wacht en probeert het volgende interval opnieuw).
  3. Gebruik Validatie testen om haar meteen te draaien, met de argumenten van de planning: u ziet het oordeel (Mag draaien (loopt 1×) of Nog niet — wacht), de duur en de logs.
  4. Sluit het venster en klik op Opslaan in de editor van de planning.
# Geeft True terug zodra het bestand van de dag op de interne FTP is aangekomen.
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)

De validatie draait in dezelfde omgeving als het hoofdscript: ze krijgt dezelfde input (argumenten en context), en heeft dezelfde bestanden, dezelfde Python-omgeving en dezelfde SDK (db, http, log, …).

Dica

Code hebben is de validatie gebruiken — er is geen schakelaar. Klik op het × (De validatie verwijderen) om niet meer te valideren: de code wordt bij het opslaan verwijderd en het hoofdscript draait weer bij de eerste tik van het venster.

Argumenten van de planning

De sectie Argumenten legt naam/waarde-paren vast die bij elke uitvoering van deze planning in input["args"] bij het script aankomen — net als bij de handmatige uitvoering komen de waarden als tekst aan. Zo bedient hetzelfde script twee verschillende planningen: een dagelijkse exportar met {"ambito": "dia"} en een maandelijkse met {"ambito": "mes"}, bijvoorbeeld.

Opslaan, inschakelen, volgen

  • Opslaan maakt de planning aan (of werkt haar bij). De knop wordt pas actief wanneer de naam is ingevuld en het tijdschema geldig is.
  • De schakelaar Actief bovenaan zet haar aan en uit zonder iets te verwijderen — in de boom toont een uitgeschakelde planning (uitgeschakeld).
  • Een actieve planning van een script in Concept draait niet: de gevallen blijven Overgeslagen, met de notitie "Het script staat in concept".

Het paneel Uitvoeringen

Nadat er is opgeslagen, toont de rechterkant van de editor het paneel Uitvoeringen — de planning van buitenaf gezien, live bijgewerkt:

  • De eerste regel zegt of de planningsmotor van de installatie leeft ("Planner actief · laatste controle N s geleden"). Draait hij niet, dan verschijnt er een duidelijke waarschuwing — de geplande tijdstippen bestaan, maar niemand gaat zich eraan houden totdat de planner start. Praat in dat geval met wie de installatie beheert.
  • Daaronder de lijst met gevallen — elk gepland tijdstip en de status ervan:
Status Betekent
Nog te doen Toekomstig tijdstip, nog niet aan de beurt.
Wordt uitgevoerd De uitvoering is nu bezig.
Gedaan Hij heeft gedraaid.
Gemist Hij heeft niet gedraaid en het beleid is Negeren (of hij was al niet meer in te halen). De reden staat op de regel.
Overgeslagen Hij heeft niet gedraaid — bijv. script in concept, of overlap met de vorige uitvoering.

Bij een planning met validatie opent klikken op een geval de Pogingen van de validatie: elke peiling met het oordeel (gereed, nog niet of fout) en het bericht. Reeksen van "nog niet" verschijnen ingeklapt — "12 pogingen zonder nieuws" — zodat de drie regels die ertoe doen niet verloren gaan in de massa.

Het paneel Uitvoeringen van de planning: op deze installatie staat de planner stil, en daarom zijn er geen geplande gevallen.
Het paneel Uitvoeringen van de planning: op deze installatie staat de planner stil, en daarom zijn er geen geplande gevallen.

Veelgestelde vragen

Ik heb dag 31 ingesteld en er zijn maanden waarin hij niet draait. Dat is het gedrag van Op een vaste dag: in maanden zonder die dag draait hij niet — de editor waarschuwt wanneer u 29, 30 of 31 kiest. Gebruik voor "het einde van de maand" Op de laatste dag van de maand.

De uitvoering van 9.00 uur verscheen als Overgeslagen (overlap). De vorige uitvoering was nog bezig toen het nieuwe tijdstip aanbrak. Het platform voert dezelfde planning nooit twee keer tegelijk uit. Gebeurt dat vaak, verruim dan het interval of verminder het werk per uitvoering.

De validatie gaf True terug, maar het hoofdscript draaide maar één keer — de voorwaarde is nog steeds waar. Dat is met opzet: wanneer de validatie True teruggeeft, draait het hoofdscript één keer en sluit het venster tot de volgende dag. Zonder dat zou een voorwaarde die waar blijft, het script tot het einde van het venster in een lus laten draaien.

De klok is verzet (zomer-/wintertijd) — moet ik de planningen aanpassen? Nee. De tijdstippen worden geïnterpreteerd in de Tijdzone van de planning; de tijdswisseling wordt door het platform afgehandeld.