Schemalägga återkommande jobb med pg_cron
Automatisera återkommande arbete i Supabase genom att använda pg_cron för att schemalägga periodiska anrop till Edge Functions, rensningsjobb och dataaggregering enligt en tillförlitlig tidsplan.
Schemalägga återkommande jobb med pg_cron är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Varför schemalagda jobb är viktiga
Komplexa arbetsflöden behöver ofta köras enligt ett schema, inte bara som svar på en begäran. Tänk på nattliga rensningar, timvisa aggregeringar eller veckovisa utskick av sammanfattningar.
Supabase levereras med tillägget pg_cron, som låter dig köra SQL enligt ett återkommande schema direkt i Postgres.
- Ingen extern schemaläggare att underhålla
- Körs nära dina data
- Kan utlösa Edge Functions via HTTP
Aktivera pg_cron
Aktivera tillägget en gång per projekt. Gå till Database > Extensions i Supabase-dashboarden och aktivera pg_cron, eller kör SQL.
Det skapar en tabell med namnet cron.job som håller reda på alla schemalagda uppgifter.
create extension if not exists pg_cron;Anatomin hos ett cron-schema
pg_cron använder standardiserad cron-syntax med fem fält: minut, timme, dag i månaden, månad och veckodag.
0 3 * * *= varje dag kl. 03:00*/15 * * * *= var 15:e minut0 0 * * 0= varje söndag vid midnatt
Schemalägg ditt första jobb
Använd cron.schedule(name, schedule, sql) för att registrera ett jobb. Här tar vi bort utgångna sessioner varje natt kl. 02:00.
select cron.schedule(
'nightly-session-cleanup',
'0 2 * * *',
$$ delete from sessions where expires_at < now() $$
);Inspektera schemalagda jobb
Alla jobb finns i cron.job. Fråga tabellen för att bekräfta schemat och hitta det jobid du behöver för uppdateringar eller borttagning.
select jobid, schedule, jobname, active from cron.job;Granska körningshistoriken
pg_cron registrerar varje körning i cron.job_run_details. Det här är ditt första stopp när du felsöker ett jobb som inte gjorde det du förväntade dig.
statusvisar om körningen lyckades eller misslyckadesreturn_messageinnehåller eventuell feltext
select jobid, status, return_message, start_time
from cron.job_run_details
order by start_time desc
limit 10;Utlös en Edge Function från cron
För riktig arbetsflödeslogik anropar du en Edge Function via HTTP med tillägget pg_net. Cron-jobbet skickar begäran och funktionen utför det tunga arbetet.
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
) $$
);Uppdatera ett jobb
Om du vill ändra ett schema anropar du cron.schedule igen med samma jobbnamn. pg_cron ersätter den befintliga definitionen i stället för att skapa en dubblett.
select cron.schedule(
'nightly-session-cleanup',
'0 4 * * *',
$$ delete from sessions where expires_at < now() $$
);Ta bort schemaläggningen för ett jobb
Ta bort ett jobb med namn med cron.unschedule. Rensa alltid bort jobb du inte längre behöver så att körningshistoriken förblir meningsfull.
select cron.unschedule('nightly-session-cleanup');Idempotens och överlappning
Schemalagda jobb kan överlappa om en körning tar längre tid än intervallet. Utforma jobben så att de är idempotenta och skydda mot samtidiga körningar.
- Använd advisory locks för långa jobb
- Bearbeta i begränsade batcher
- Markera rader som bearbetade innan du agerar
Tänk på tidszoner
pg_cron-scheman körs i databasserverns tidszon, vanligtvis UTC. Ett jobb med schemat 0 0 * * * körs vid midnatt UTC, inte vid midnatt i din lokala tidszon.
Beräkna förskjutningar för lokal tid uttryckligen så att rapporterna blir tillgängliga när användarna förväntar sig dem.
Snabbtest
Testa dina kunskaper om schemaläggning med pg_cron.
Sammanfattning
Nu kan du automatisera återkommande steg i arbetsflöden direkt i Supabase.
- Aktivera
pg_cronoch använd cron-syntax med fem fält - Schemalägg med
cron.scheduleoch ta bort medcron.unschedule - Utlös Edge Functions via
net.http_post - Granska körningar i
cron.job_run_details - Ta hänsyn till UTC-tidszon och överlappande körningar
Lär dig Supabase som Backend as a Service med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 11
- Lektioner
- 40
Vanliga frågor
Är lektionen ”Schemalägga återkommande jobb med pg_cron” gratis?
Ja – hela texten till ”Schemalägga återkommande jobb med pg_cron” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Vad lär jag mig i ”Schemalägga återkommande jobb med pg_cron”?
Automatisera återkommande arbete i Supabase genom att använda pg_cron för att schemalägga periodiska anrop till Edge Functions, rensningsjobb och dataaggregering enligt en tillförlitlig tidsplan. Ni övar på Supabase som Backend as a Service med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Supabase som Backend as a Service?
Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.
Hur lång tid tar lektionen ”Schemalägga återkommande jobb med pg_cron”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Supabase som Backend as a Service-lektionen?
Ja. Varje Supabase som Backend as a Service-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Integrering med externa tjänster
- Uppgiftsköer med Supabase och Workers
- Schemalägga återkommande jobb med pg_cron