KEPLIN Docs

Scheman

Få ett skript att köra av sig självt — upprepningar, bestämda tidpunkter i kalendern, bevakningsfönster med validering, tidszoner och ikappkörning av missade körningar.

Ett schema (cron) får ett skript att köra av sig självt: varje dag kl. 07.00, var femtonde minut, sista fredagen i månaden, eller var femte minut i ett nattfönster tills dagens arbete är gjort. Ett skript kan ha flera scheman, vart och ett med sin tid, sin tidszon och sina argument.

På den här sidan använder vi schemat Indicadores diários i appen Kundhantering, som kör skriptet atualizar_indicadores varje dag kl. 07.00 (tidszon Europe/Lisbon).

Skapa och öppna scheman

Fäll ut skriptets nod i trädet i sidopanelen. Raden Scheman visar hur många som finns; under den visas varje schema med sitt namn, sin sammanfattade tid och, när det är avstängt, märkningen (inaktiverat).

  • För att skapa: klicka på + på raden Scheman (Nytt schema). Editorn öppnas i en ny flik.
  • För att redigera: klicka på schemats namn.
  • I menyn för varje schema hittar du Aktivera/Inaktivera och Ta bort. Att ta bort stoppar schemat för gott, men skriptets körningshistorik finns kvar.

Schemat Indicadores diários — varje dag kl. 07:00 (Europe/Lisbon), med panelen Körningar till höger.
Schemat Indicadores diários — varje dag kl. 07:00 (Europe/Lisbon), med panelen Körningar till höger.

Editorn har formuläret till vänster och panelen Körningar till höger (först efter att du sparat — se slutet av sidan). Överst slår reglaget Aktivt på och av schemat, och Spara sparar allt.

Välja frekvens

Fältet Frekvens erbjuder tre kort — tre sorters schema:

Kort Passar för
Upprepa ”Var N:e minut eller timme, utan uppehåll.” Sonderingar, löpande synkroniseringar.
Vid bestämda tidpunkter ”Vid en tid på dygnet, de dagar du väljer.” Klassikern: dagligen, veckovis, månadsvis.
Bevakningsfönster ”Sonderar var N:e minut mellan två tider och slutar när dagens arbete är gjort.”

Under korten byter genvägen Skriv uttrycket för hand ut kontrollerna mot ett fritt cron-fält, Uttryck — för den som redan har ett. Det godtar 5 eller 6 fält (med sekunder), t.ex.: 0 9 * * 1-5. Tillbaka till kontrollerna ångrar bytet.

Upprepa

  1. Välj kortet Upprepa.
  2. Välj minuter eller timmar i Enhet.
  3. Med minuter anger du Var hur många minuter? (t.ex.: 15). Med timmar anger du Vid minut — den minut i varje timme då det utlöses (t.ex.: 0 kör kl. 09.00, 10.00, 11.00…).

Vid bestämda tidpunkter

  1. Välj kortet Vid bestämda tidpunkter.

  2. Välj varianten i Upprepas:

    Alternativ Fält som dyker upp
    Varje dag (på de valda dagarna) Vid tidpunkten + Dagar — sju knappar (Mån…Sön) med genvägarna Alla, Vardagar och Helg. Vilken kombination som helst går: måndag, onsdag och fredag, till exempel.
    En gång i veckan Vid tidpunkten + Veckodag.
    En gång i månaden Vid tidpunkten + I månaden körs det (se nedan).
  3. För det månatliga har I månaden körs det tre former:

    Alternativ Exempel
    På en fast dag Den 1:a, den 15:e… Med Dag i månaden över 28 varnar editorn: ”I månader som saknar den dagen körs det inte. För ’sista dagen’, använd det egna alternativet.”
    På en position (t.ex. sista fredagen) Position (1:a, 2:a, 3:e, 4:e, 5:e eller sista) + Veckodag — t.ex.: månadens sista fredag.
    På månadens sista dag Den 31:a, 30:e, 28:e eller 29:e — vad månaden nu har.

Tidszonen

Varje schema har en Tidszon — tiderna du anger är tider i den tidszonen, inte serverns. Väljaren listar alla IANA-tidszoner, med sökning (t.ex.: Lisbon, Sao_Paulo). Ett schema kl. 09.00 i America/Sao_Paulo körs kl. 09.00 i São Paulo, även med servern i Europa — och sommartidsomställningarna sköter plattformen.

Om en körning missas

Ibland passerar den utsatta tiden utan körning: servern var avstängd, startade om mitt i, eller den föregående körningen pågick fortfarande. Avsnittet Om en körning missas avgör vad som händer med de tillfällena:

Alternativ Följd
Ignorera Tar inte igen något. Att körningen missades registreras ändå (status Missad i panelen Körningar).
Bara den senaste Tar igen den senast missade körningen; de tidigare registreras som missade.
Alla Tar igen alla körningar som missats, i den ordning de var schemalagda.

Ikappkörningarna visas i skriptets historik med utlösaren Ikappkörning.

Nota

I ett bevakningsfönster är ikappkörningens enhet dagen: att ta igen kör dagens arbete även efter att fönstret har stängts — det upprepar inte sonderingarna en och en.

Bevakningsfönster

Det tredje kortet löser ett mönster som klassisk cron inte kan uttrycka: ”från kl. 18.00, försök var femte minut; när det går, kör en gång och sluta till i morgon”. Typiskt för att vänta på att en fil ska komma, att en dagsavslutning ska bli klar i ett annat system, eller att en tabell ska bli ifylld.

Ett schema i Bevakningsfönster — intervall, fönstrets tider, dagar och policyn för ikappkörning.
Ett schema i Bevakningsfönster — intervall, fönstrets tider, dagar och policyn för ikappkörning.

Fälten:

Fält Vad det anger
Var Sonderingsintervallet: 1, 2, 3, 5, 10, 15, 20 eller 30 minuter.
Från / Till Tiderna då fönstret öppnar och stänger, i den valda tidszonen.
Dagar De veckodagar då fönstret finns (samma sju knappar och genvägar).
Om något skript ger fel, stoppa resten av dagen Påslaget stänger ett fel fönstret till nästa dag i stället för att fortsätta försöka.

Utan något mer kör fönstret skriptet vid dagens första tick och stänger till nästa dag. Den verkliga kraften ligger i valideringen:

Valideringsskriptet

Avsnittet Valideringsskript tar emot lite Python-kod som vid varje sondering avgör om det redan går att köra:

  1. Klicka på Lägg till validering. En editor öppnas i en dialogruta.
  2. Skriv en funktion main(input) som returnerar True (redo — huvudskriptet körs en gång och fönstret stänger till i morgon) eller False (inte än — det väntar och försöker igen vid nästa intervall).
  3. Använd Testa valideringen för att köra den direkt, med schemats argument: du ser utslaget (Får köras (kör 1×) eller Inte än — väntar), varaktigheten och loggarna.
  4. Stäng dialogrutan och klicka på Spara i schemats editor.
# Returnerar True när dagens fil redan kommit till den interna FTP:n.
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 körs i samma miljö som huvudskriptet: den får samma input (argument och kontext), och har samma filer, samma Python-miljö och samma SDK (db, http, log, …).

Dica

Att ha kod är att använda valideringen — det finns inget reglage. För att sluta validera klickar du på × (Ta bort valideringen): koden tas bort när du sparar och huvudskriptet körs återigen vid fönstrets första tick.

Schemats argument

Avsnittet Argument anger namn/värde-par som når skriptet i input["args"] vid alla körningar av det här schemat — precis som vid manuell körning kommer värdena som text. Det är så samma skript betjänar två olika scheman: en daglig exportar med {"ambito": "dia"} och en månatlig med {"ambito": "mes"}, till exempel.

Spara, aktivera, följa upp

  • Spara skapar (eller uppdaterar) schemat. Knappen blir aktiv först när namnet är ifyllt och tiden är giltig.
  • Reglaget Aktivt överst slår på och av utan att radera något — i trädet visar ett avstängt schema (inaktiverat).
  • Ett aktivt schema för ett skript i Utkast körs inte: tillfällena blir Överhoppad, med noteringen ”Skriptet är ett utkast”.

Panelen Körningar

Efter att du sparat visar editorns högra sida panelen Körningar — schemat sett utifrån, uppdaterad i realtid:

  • Första raden säger om installationens schemaläggningsmotor lever (”Schemaläggaren är aktiv · senaste kontrollen för N s sedan”). Om den inte körs visas en tydlig varning — de planerade tiderna finns, men ingen kommer att hålla dem förrän schemaläggaren startar. Prata i så fall med den som administrerar installationen.
  • Under den, listan över tillfällen — varje utsatt tid och dess status:
Status Betyder
Väntar Framtida tid, ännu inte uppfylld.
Körs Körningen pågår just nu.
Klar Den kördes.
Missad Den blev ogjord och policyn är Ignorera (eller den gick inte längre att ta igen). Orsaken visas på raden.
Överhoppad Den hann aldrig köras — t.ex.: skript i utkast, eller överlappning med föregående körning.

I ett schema med validering öppnar ett klick på ett tillfälle Valideringens försök: varje sondering med sitt utslag (redo, inte än eller fel) och sitt meddelande. Följder av ”inte än” visas hopfällda — ”12 försök utan något nytt” — så att de tre rader som betyder något inte försvinner i mängden.

Schemats panel Körningar: i den här installationen står schemaläggaren stilla, och därför finns inga planerade tillfällen.
Schemats panel Körningar: i den här installationen står schemaläggaren stilla, och därför finns inga planerade tillfällen.

Vanliga frågor

Jag valde den 31:a och det finns månader då det inte körs. Det är beteendet hos På en fast dag: i månader som saknar den dagen körs det inte — editorn varnar när du väljer 29, 30 eller 31. För ”slutet av månaden”, använd På månadens sista dag.

Körningen kl. 09.00 visades som Överhoppad (överlappning). Den föregående körningen pågick fortfarande när den nya tiden kom. Plattformen kör aldrig samma schema två gånger samtidigt. Om det händer ofta, förläng intervallet eller minska arbetet per körning.

Valideringen returnerade True men huvudskriptet kördes bara en gång — villkoret är fortfarande sant. Det är med flit: när valideringen returnerar True körs huvudskriptet en gång och fönstret stänger till nästa dag. Utan det skulle ett villkor som förblev sant få skriptet att köra i loop tills fönstret tog slut.

Klockan har ställts om (sommar/vinter) — måste jag justera schemana? Nej. Tiderna tolkas i schemats Tidszon; omställningen hanteras av plattformen.