KEPLIN Docs

Ajastukset

Skriptin saaminen ajamaan itsekseen — toistot, täsmälliset hetket kalenterissa, vahtimisikkunat validoinnilla, aikavyöhykkeet ja väliin jääneiden ajojen jälkisuoritus.

Ajastus (cron) saa skriptin ajamaan itsekseen: joka päivä klo 7.00, 15 minuutin välein, kuukauden viimeisenä perjantaina, tai 5 minuutin välein yöllisessä ikkunassa siihen asti kunnes päivän työ on tehty. Skriptillä voi olla useita ajastuksia, kullakin oma aikataulunsa, aikavyöhykkeensä ja argumenttinsa.

Tällä sivulla käytämme Asiakashallinta-sovelluksen ajastusta Indicadores diários, joka ajaa skriptin atualizar_indicadores joka päivä klo 7.00 (aikavyöhyke Europe/Lisbon).

Ajastusten luonti ja avaaminen

Laajenna sivupalkin puussa skriptin solmu. Rivi Ajastukset näyttää, montako niitä on; sen alla jokainen ajastus näkyy nimineen, tiivistettyine aikatauluineen ja, kun se on pois päältä, merkintöineen (pois käytöstä).

  • Luodaksesi: napsauta rivin Ajastukset +-painiketta (Uusi ajastus). Editori avautuu uuteen välilehteen.
  • Muokataksesi: napsauta ajastuksen nimeä.
  • Jokaisen ajastuksen valikossa on Ota käyttöön/Poista käytöstä ja Poista. Poistaminen pysäyttää ajastuksen lopullisesti, mutta skriptin suoritushistoria säilyy.

Ajastus Indicadores diários — joka päivä klo 07:00 (Europe/Lisbon), ja oikealla paneeli Suoritukset.
Ajastus Indicadores diários — joka päivä klo 07:00 (Europe/Lisbon), ja oikealla paneeli Suoritukset.

Editorissa on lomake vasemmalla ja paneeli Suoritukset oikealla (vasta tallennuksen jälkeen — katso sivun loppu). Yläreunassa kytkin Aktiivinen kytkee ajastuksen päälle ja pois, ja Tallenna tallentaa kaiken.

Toistuvuuden valinta

Kenttä Toistuvuus tarjoaa kolme korttia — kolme ajastuksen luonnetta:

Kortti Mihin se sopii
Toista ”N minuutin tai tunnin välein, tauotta.” Kyselyt, jatkuvat synkronoinnit.
Määrättyinä hetkinä ”Tiettyyn kellonaikaan valitseminasi päivinä.” Klassikko: päivittäin, viikoittain, kuukausittain.
Vahtimisikkuna ”Tarkistaa N minuutin välein kahden kellonajan välillä ja pysähtyy, kun päivän työ on tehty.”

Korttien alla oikopolku Kirjoita lauseke käsin vaihtaa säätimet vapaan cron-Lausekkeen kentäksi — sille, jolla se on jo valmiina. Se hyväksyy 5 tai 6 kenttää (sekunneilla), esim. 0 9 * * 1-5. Takaisin säätimiin kumoaa vaihdon.

Toista

  1. Valitse kortti Toista.
  2. Valitse kohdassa Yksikkö joko minuuttia tai tuntia.
  3. Minuuteilla määritä Kuinka monen minuutin välein? (esim. 15). Tunneilla määritä Minuutilla — se kunkin tunnin minuutti, jolloin ajastus laukeaa (esim. 0 ajaa klo 9.00, 10.00, 11.00…).

Määrättyinä hetkinä

  1. Valitse kortti Määrättyinä hetkinä.

  2. Valitse kohdassa Toistuu muunnelma:

    Vaihtoehto Näkyviin tulevat kentät
    Joka päivä (valittuina päivinä) Kello + Päivät — seitsemän painiketta (ma…su) ja oikopolut Kaikki, Arkipäivät ja Viikonloppu. Mikä tahansa yhdistelmä käy: esimerkiksi maanantai, keskiviikko ja perjantai.
    Kerran viikossa Kello + Viikonpäivä.
    Kerran kuukaudessa Kello + Kuukaudessa se ajaa (katso alta).
  3. Kuukausittaisessa kohdalla Kuukaudessa se ajaa on kolme muotoa:

    Vaihtoehto Esimerkki
    Kiinteänä päivänä Päivä 1, päivä 15… Kun Kuukauden päivä on yli 28, editori varoittaa: ”Kuukausina, joissa ei ole sitä päivää, se ei aja. ’Viimeiselle päivälle’ on oma valintansa.”
    Tietyssä kohdassa (esim. viimeinen perjantai) Kohta (1., 2., 3., 4., 5. tai viimeinen) + Viikonpäivä — esim. kuukauden viimeinen perjantai.
    Kuukauden viimeisenä päivänä 31, 30, 28 tai 29 — mitä kuukaudessa sattuu olemaan.

Aikavyöhyke

Jokaisella ajastuksella on Aikavyöhyke — määrittämäsi kellonajat ovat kyseisen vyöhykkeen aikoja, eivät palvelimen. Valitsin listaa kaikki IANA-vyöhykkeet, ja siinä on haku (esim. Helsinki, Sao_Paulo). Klo 9.00 vyöhykkeellä America/Sao_Paulo ajettava ajastus ajetaan São Paulon aikaa klo 9.00, vaikka palvelin olisi Euroopassa — ja kesäajan siirtymät jäävät alustan huoleksi.

Jos ajo jää väliin

Toisinaan merkitty hetki menee ohi ilman suoritusta: palvelin oli sammuksissa, se käynnistyi uudelleen kesken kaiken, tai edellinen suoritus oli vielä käynnissä. Osio Jos ajo jää väliin päättää, mitä näille tapauksille tehdään:

Vaihtoehto Seuraus
Ohita Ei suorita jälkikäteen. Väliin jääminen kirjataan (tila Menetetty paneelissa Suoritukset).
Vain viimeisin Suorittaa viimeksi väliin jääneen ajon; aiemmat kirjataan menetetyiksi.
Kaikki Suorittaa kaikki väliin jääneet ajot siinä järjestyksessä kuin ne oli ajastettu.

Jälkikäteen suoritetut ajot näkyvät skriptin historiassa alkuperällä Jälkisuoritus.

Nota

Vahtimisikkunassa jälkisuorituksen yksikkö on päivä: jälkisuoritus tekee päivän työn silloinkin, kun ikkuna on jo sulkeutunut — se ei toista tarkistuksia yksi kerrallaan.

Vahtimisikkuna

Kolmas kortti ratkaisee kuvion, jota klassinen cron ei osaa ilmaista: ”klo 18.00 alkaen yritä 5 minuutin välein; kun onnistut, aja kerran ja pysähdy huomiseen”. Tyypillistä silloin kun odotetaan tiedoston saapumista, päivän sulkemista toisessa järjestelmässä tai taulun täyttymistä.

Vahtimisikkuna-ajastus — väli, ikkunan kellonajat, päivät ja jälkisuorituksen politiikka.
Vahtimisikkuna-ajastus — väli, ikkunan kellonajat, päivät ja jälkisuorituksen politiikka.

Kentät:

Kenttä Mitä se määrittää
Joka Tarkistusväli: 1, 2, 3, 5, 10, 15, 20 tai 30 minuuttia.
Alkaen / Päättyen Kellonajat, jolloin ikkuna aukeaa ja sulkeutuu, valitulla vyöhykkeellä.
Päivät Viikonpäivät, joina ikkuna on olemassa (samat seitsemän painiketta ja oikopolut).
Jos jokin skripti epäonnistuu, pysäytä loppupäiväksi Päällä virhe sulkee ikkunan seuraavaan päivään sen sijaan että yrittäminen jatkuisi.

Ilman muuta ikkuna ajaa skriptin kunkin päivän ensimmäisellä laukaisulla ja sulkeutuu seuraavaan päivään. Todellinen voima on validoinnissa:

Validointiskripti

Osio Validointiskripti ottaa vastaan pienen Python-koodin, joka päättää joka tarkistuksella, voiko jo suorittaa:

  1. Napsauta Lisää validointi. Valintaikkunaan avautuu editori.
  2. Kirjoita funktio main(input), joka palauttaa True (valmis — pääskripti ajaa kerran ja ikkuna sulkeutuu huomiseen) tai False (ei vielä — odottaa ja yrittää seuraavalla välillä).
  3. Käytä painiketta Testaa validointi ajaaksesi sen heti ajastuksen argumenteilla: näet tuomion (Voi suorittaa (ajaa 1×) tai Ei vielä — odottaa), keston ja lokit.
  4. Sulje valintaikkuna ja napsauta ajastuksen editorissa Tallenna.
# Palauttaa True, kun päivän tiedosto on saapunut sisäiseen FTP:hen.
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)

Validointi ajetaan pääskriptin samassa ympäristössä: se saa saman input-arvon (argumentit ja kontekstin), ja sillä on samat tiedostot, sama Python-ympäristö ja sama SDK (db, http, log, …).

Dica

Koodin olemassaolo on validoinnin käyttämistä — kytkintä ei ole. Lopettaaksesi validoinnin napsauta × (Poista validointi): koodi poistetaan tallennettaessa, ja pääskripti alkaa taas ajaa ikkunan ensimmäisellä laukaisulla.

Ajastuksen argumentit

Osio Argumentit määrittää nimi/arvo-pareja, jotka saapuvat skriptille kohdassa input["args"] tämän ajastuksen kaikissa suorituksissa — aivan kuten manuaalisessa suorituksessa, arvot saapuvat tekstinä. Näin sama skripti palvelee kahta eri ajastusta: esimerkiksi päivittäinen exportar arvolla {"ambito": "dia"} ja kuukausittainen arvolla {"ambito": "mes"}.

Tallenna, ota käyttöön, seuraa

  • Tallenna luo (tai päivittää) ajastuksen. Painike aktivoituu vasta kun nimi on täytetty ja aikataulu on kelvollinen.
  • Yläreunan kytkin Aktiivinen kytkee päälle ja pois mitään poistamatta — puussa pois kytketty ajastus näyttää merkinnän (pois käytöstä).
  • Luonnos-tilassa olevan skriptin aktiivinen ajastus ei aja: tapaukset jäävät tilaan Ohitettu, huomiona ”Skripti on luonnostilassa”.

Suoritukset-paneeli

Tallennuksen jälkeen editorin oikea laita näyttää paneelin Suoritukset — ajastuksen ulkoapäin nähtynä, päivittyen reaaliajassa:

  • Ensimmäinen rivi kertoo, onko asennuksen ajastinmoottori elossa (”Ajastin aktiivinen · viimeisin tarkistus N s sitten”). Jos se ei ole käynnissä, näkyviin tulee selvä varoitus — suunnitellut kellonajat ovat olemassa, mutta kukaan ei toteuta niitä ennen kuin ajastin käynnistyy. Puhu siinä tapauksessa asennuksen ylläpitäjän kanssa.
  • Sen alla on tapausten lista — jokainen merkitty hetki ja sen tila:
Tila Mitä se tarkoittaa
Tekemättä Tuleva hetki, vielä toteuttamatta.
Käynnissä Suoritus on parhaillaan menossa.
Tehty Ajoi.
Menetetty Jäi ajamatta, ja politiikkana on Ohita (tai se ei enää ollut jälkisuoritettavissa). Syy näkyy rivillä.
Ohitettu Ei ehtinyt ajoon — esim. skripti luonnostilassa tai päällekkäisyys edellisen suorituksen kanssa.

Kun ajastuksella on validointi, tapauksen napsauttaminen avaa Validoinnin yritykset: jokainen tarkistus tuomioineen (valmis, ei vielä tai virhe) ja viesteineen. Peräkkäiset ”ei vielä” -sarjat näkyvät kutistettuina — ”12 yritystä ilman uutta” — jotta ne kolme riviä, joilla on väliä, eivät katoa joukkoon.

Ajastuksen Suoritukset-paneeli: tässä asennuksessa ajastin on pysähdyksissä, joten suunniteltuja tapauksia ei ole.
Ajastuksen Suoritukset-paneeli: tässä asennuksessa ajastin on pysähdyksissä, joten suunniteltuja tapauksia ei ole.

Usein kysyttyä

Merkitsin päiväksi 31, ja on kuukausia jolloin se ei aja. Se on vaihtoehdon Kiinteänä päivänä toiminta: kuukausina, joissa ei ole sitä päivää, se ei aja — editori varoittaa, kun valitset 29, 30 tai 31. ”Kuun loppuun” käytä vaihtoehtoa Kuukauden viimeisenä päivänä.

Klo 9.00 suoritus näkyi tilassa Ohitettu (päällekkäisyys). Edellinen suoritus oli vielä käynnissä, kun uusi hetki koitti. Alusta ei koskaan aja samaa ajastusta kahdesti yhtä aikaa. Jos näin käy usein, pidennä väliä tai vähennä suoritusta kohti tehtävää työtä.

Validointi palautti True, mutta pääskripti ajoi vain kerran — ehto on yhä tosi. Se on tarkoituksellista: kun validointi palauttaa True, pääskripti ajaa kerran ja ikkuna sulkeutuu seuraavaan päivään. Ilman sitä ehto, joka jäisi todeksi, panisi skriptin ajamaan silmukassa ikkunan loppuun asti.

Kellonaika muuttui (kesä-/talviaika) — pitääkö minun säätää ajastuksia? Ei. Kellonajat tulkitaan ajastuksen Aikavyöhykkeellä; kellonajan siirtymän hoitaa alusta.