Planlegging av gjentakende jobber med pg_cron
Automatiser gjentakende arbeid i Supabase ved å bruke pg_cron til å planlegge periodiske kall til Edge Functions, oppryddingsjobber og dataaggregering på en pålitelig tidsplan.
Planlegging av gjentakende jobber med pg_cron er en gratis leksjon i Supabase som backend som tjeneste på CoddyKit. Dette er leksjon 3 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Supabase som backend som tjeneste, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.
Hvorfor planlagte jobber er viktige
Komplekse arbeidsflyter trenger ofte at arbeid utføres etter en tidsplan, ikke bare som svar på en forespørsel. Tenk på nattlig opprydding, aggregeringer hver time eller ukentlige e-postsammendrag.
Supabase leveres med utvidelsen pg_cron, som lar deg kjøre SQL etter en gjentakende tidsplan direkte i Postgres.
- Ingen ekstern planlegger å vedlikeholde
- Kjører nær dataene dine
- Kan utløse Edge Functions via HTTP
Aktivere pg_cron
Aktiver utvidelsen én gang per prosjekt. Gå til Database > Extensions i Supabase-dashbordet og slå på pg_cron, eller kjør SQL.
Det opprettes en cron.job-tabell som holder oversikt over alle planlagte oppgaver.
create extension if not exists pg_cron;Oppbygningen av en cron-plan
pg_cron bruker standard cron-syntaks med fem felt: minutt, time, dag i måneden, måned og ukedag.
0 3 * * *= hver dag kl. 03:00*/15 * * * *= hvert 15. minutt0 0 * * 0= hver søndag ved midnatt
Planlegge den første jobben
Bruk cron.schedule(name, schedule, sql) til å registrere en jobb. Her sletter vi utløpte økter hver natt kl. 02:00.
select cron.schedule(
'nightly-session-cleanup',
'0 2 * * *',
$$ delete from sessions where expires_at < now() $$
);Kontrollere planlagte jobber
Alle jobber ligger i cron.job. Spørr i tabellen for å bekrefte tidsplanen og finne jobid, som du trenger for å oppdatere eller fjerne jobben.
select jobid, schedule, jobname, active from cron.job;Se gjennom kjøringshistorikken
pg_cron registrerer hver kjøring i cron.job_run_details. Dette er det første stedet du bør se når du feilsøker en jobb som ikke gjorde det du forventet.
statusviser om kjøringen lyktes eller mislyktesreturn_messageinneholder eventuell feiltekst
select jobid, status, return_message, start_time
from cron.job_run_details
order by start_time desc
limit 10;Utløse en Edge Function fra cron
For reell arbeidsflytlogikk kan du kalle en Edge Function via HTTP ved hjelp av utvidelsen pg_net. Cron-jobben sender forespørselen, mens funksjonen utfører det tunge arbeidet.
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
) $$
);Oppdatere en jobb
Hvis du vil endre en tidsplan, kaller du ganske enkelt cron.schedule på nytt med samme jobbnavn. pg_cron erstatter den eksisterende definisjonen i stedet for å opprette en kopi.
select cron.schedule(
'nightly-session-cleanup',
'0 4 * * *',
$$ delete from sessions where expires_at < now() $$
);Fjerne en jobb fra tidsplanen
Fjern en jobb etter navn med cron.unschedule. Rydd alltid bort jobber du ikke lenger trenger, slik at kjøringshistorikken forblir meningsfull.
select cron.unschedule('nightly-session-cleanup');Idempotens og overlapping
Planlagte jobber kan overlappe hvis én kjøring tar lengre tid enn intervallet. Utform jobbene slik at de er idempotente, og beskytt dem mot samtidige kjøringer.
- Bruk rådgivende låser for lange jobber
- Behandle data i avgrensede grupper
- Merk rader som behandlet før du utfører handlingen
Vær oppmerksom på tidssoner
pg_cron-planer kjører i tidssonen til databaseserveren, vanligvis UTC. En jobb satt til 0 0 * * * kjører ved midnatt UTC, ikke ved midnatt i din lokale tidssone.
Beregn forskyvninger for lokal tid eksplisitt, slik at rapportene blir tilgjengelige når brukerne forventer dem.
Kort kontroll
Test forståelsen din av pg_cron-planlegging.
Oppsummering
Du kan nå automatisere gjentakende trinn i arbeidsflyter i Supabase.
- Aktiver
pg_cronog bruk cron-syntaks med fem felt - Planlegg med
cron.schedule, og fjern medcron.unschedule - Utløs Edge Functions via
net.http_post - Kontroller kjøringer i
cron.job_run_details - Ta hensyn til UTC-tidssonen og overlappende kjøringer
Lær deg Supabase som backend som tjeneste med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 11
- Leksjoner
- 40
Ofte stilte spørsmål
Er leksjonen «Planlegging av gjentakende jobber med pg_cron» gratis?
Ja – hele teksten i «Planlegging av gjentakende jobber med pg_cron» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Supabase som backend som tjeneste-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.
Hva lærer jeg i «Planlegging av gjentakende jobber med pg_cron»?
Automatiser gjentakende arbeid i Supabase ved å bruke pg_cron til å planlegge periodiske kall til Edge Functions, oppryddingsjobber og dataaggregering på en pålitelig tidsplan. Du øver på Supabase som backend som tjeneste med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Supabase som backend som tjeneste?
Ingen tidligere erfaring er nødvendig. Supabase som backend som tjeneste på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.
Hvor lang tid tar leksjonen «Planlegging av gjentakende jobber med pg_cron»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Supabase som backend som tjeneste-leksjonen?
Ja. Alle Supabase som backend som tjeneste-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Integrasjon med eksterne tjenester
- Jobbkøer med Supabase og workers
- Planlegging av gjentakende jobber med pg_cron