Supabase backend palveluna · Oppitunti

Toistuvien töiden ajastus pg_cronilla

Automatisoi toistuvat tehtävät Supabasessa pg_cronilla ajastamalla säännöllisiä Edge Function -kutsuja, siivoustehtäviä ja tietojen koostamista luotettavan aikataulun mukaan.

Oppitunti 3/313 vaihetta

Toistuvien töiden ajastus pg_cronilla on ilmainen Supabase backend palveluna-oppitunti CoddyKitissä. Tämä on oppitunti 3/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Supabase backend palveluna-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Supabase backend palveluna-kurssilla on yhteensä 3 oppituntia.

Miksi ajastetut työt ovat tärkeitä

Monimutkaisissa työnkuluissa tehtävien on usein suorituttava aikataulun mukaan, ei vain pyynnön seurauksena. Esimerkkejä ovat öiset siivoukset, tunneittain suoritettavat koostelaskennat ja viikoittain lähetettävät koosteviestit.

Supabasen mukana toimitetaan pg_cron-laajennus, jonka avulla voit suorittaa SQL-koodia toistuvan aikataulun mukaan suoraan Postgresissa.

  • Ylläpidettävää ulkoista ajastinta ei tarvita
  • Suoritus tapahtuu lähellä tietojasi
  • Edge Function -funktioita voidaan kutsua HTTP:n kautta

pg_cronin käyttöönotto

Ota laajennus käyttöön kerran projektia kohden. Siirry Supabase-hallintapaneelissa kohtaan Database > Extensions ja ota pg_cron käyttöön tai suorita SQL-koodi.

Laajennus luo cron.job-taulukon, joka seuraa kaikkia ajastettuja tehtäviä.

create extension if not exists pg_cron;

Cron-aikataulun rakenne

pg_cron käyttää vakiomuotoista viisikenttäistä cron-syntaksia: minuutti, tunti, kuukaudenpäivä, kuukausi ja viikonpäivä.

  • 0 3 * * * = joka päivä klo 03.00
  • */15 * * * * = 15 minuutin välein
  • 0 0 * * 0 = joka sunnuntai keskiyöllä

Ensimmäisen tehtävän ajastaminen

Rekisteröi tehtävä käyttämällä cron.schedule(name, schedule, sql)-kutsua. Tässä esimerkissä vanhentuneet istunnot poistetaan joka yö kello 2.

select cron.schedule(
  'nightly-session-cleanup',
  '0 2 * * *',
  $$ delete from sessions where expires_at < now() $$
);

Ajastettujen tehtävien tarkasteleminen

Jokainen tehtävä sijaitsee cron.job-taulukossa. Kyselyllä voit varmistaa aikataulusi ja selvittää jobid-arvon, jota tarvitset tehtävän päivittämiseen tai poistamiseen.

select jobid, schedule, jobname, active from cron.job;

Suoritushistorian tarkasteleminen

pg_cron tallentaa jokaisen suorituksen taulukkoon cron.job_run_details. Se on ensimmäinen paikka, josta kannattaa aloittaa odottamattomasti toimineen tehtävän vianmääritys.

  • status ilmaisee onnistumisen tai epäonnistumisen
  • return_message sisältää mahdollisen virheilmoituksen
select jobid, status, return_message, start_time
from cron.job_run_details
order by start_time desc
limit 10;

Edge Function -funktion kutsuminen cronilla

Varsinaista työnkulun logiikkaa varten kutsu Edge Function -funktiota HTTP:n kautta pg_net-laajennuksella. Cron-tehtävä lähettää pyynnön ja funktio suorittaa raskaan työn.

select cron.schedule(
  'hourly-digest',
  '0 * * * *',
  $$ select net.http_post(
       url := 'https://your-project.functions.supabase.co/digest',
       headers := '{"Authorization": "Bearer SERVICE_ROLE_KEY"}'::jsonb
     ) $$
);

Tehtävän päivittäminen

Muuta aikataulua kutsumalla cron.schedule-funktiota uudelleen samalla tehtävän nimellä. pg_cron korvaa aiemman määrityksen uuden luomisessa sen sijaan, että se loisi kaksoiskappaleen.

select cron.schedule(
  'nightly-session-cleanup',
  '0 4 * * *',
  $$ delete from sessions where expires_at < now() $$
);

Tehtävän poistaminen ajastuksesta

Poista tehtävä nimen perusteella cron.unschedule-funktiolla. Poista aina tehtävät, joita et enää tarvitse, jotta suoritushistoria säilyy merkityksellisenä.

select cron.unschedule('nightly-session-cleanup');

Idempotenssi ja päällekkäisyys

Ajastetut tehtävät voivat suorittua päällekkäin, jos yksi suoritus kestää aikaväliä pidempään. Suunnittele tehtävät idempotenteiksi ja estä samanaikaiset suoritukset.

  • Käytä pitkiin tehtäviin advisory lock -lukituksia
  • Käsittele tiedot rajattuina erinä
  • Merkitse rivit käsitellyiksi ennen toimenpiteen suorittamista

Aikavyöhykkeen huomioiminen

pg_cron-ajastukset suoritetaan tietokantapalvelimen aikavyöhykkeellä, joka on yleensä UTC. Aikataulu 0 0 * * * käynnistää tehtävän UTC-keskiyöllä, ei paikallisen aikasi keskiyöllä.

Laske paikallisajan poikkeamat erikseen, jotta raportit valmistuvat käyttäjien odottamaan aikaan.

Pikatarkistus

Testaa, miten hyvin ymmärrät pg_cron-ajastamisen.

Kertaus

Osaat nyt automatisoida toistuvia työnkulun vaiheita Supabasen sisällä.

  • Ota pg_cron käyttöön ja käytä viisikenttäistä cron-syntaksia
  • Ajasta tehtäviä cron.schedule-funktiolla ja poista niitä cron.unschedule-funktiolla
  • Kutsu Edge Function -funktioita net.http_post-funktion kautta
  • Tarkastele suorituksia taulukossa cron.job_run_details
  • Huomioi UTC-aikavyöhyke ja päällekkäiset suoritukset
Aloita maksutta

Opi Supabase backend palveluna tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
11
Oppitunnit
40

Usein kysytyt kysymykset

Onko oppitunti ”Toistuvien töiden ajastus pg_cronilla” ilmainen?

Kyllä – oppitunnin ”Toistuvien töiden ajastus pg_cronilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Supabase backend palveluna-kurssin, päivitä CoddyKit PROhon. Supabase backend palveluna-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Toistuvien töiden ajastus pg_cronilla”?

Automatisoi toistuvat tehtävät Supabasessa pg_cronilla ajastamalla säännöllisiä Edge Function -kutsuja, siivoustehtäviä ja tietojen koostamista luotettavan aikataulun mukaan. Harjoittelet Supabase backend palveluna-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Supabase backend palveluna-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Supabase backend palveluna-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/3.

Kuinka kauan ”Toistuvien töiden ajastus pg_cronilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Supabase backend palveluna-oppitunnilla?

Kyllä. Jokainen Supabase backend palveluna-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Integrointi ulkoisiin palveluihin
  2. Tehtäväjonot Supabasella ja työntekijöillä
  3. Toistuvien töiden ajastus pg_cronilla
← Takaisin: Supabase backend palveluna