Menjadwalkan Pekerjaan Berulang dengan pg_cron
Otomatiskan pekerjaan berulang di dalam Supabase menggunakan pg_cron untuk menjadwalkan pemanggilan Edge Function berkala, pekerjaan pembersihan, dan tugas agregasi data pada jadwal yang andal.
Menjadwalkan Pekerjaan Berulang dengan pg_cron adalah pelajaran Supabase Backend as a Service gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Supabase Backend as a Service, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Why Scheduled Jobs Matter
Complex workflows often need work to happen on a schedule, not just in response to a request. Think nightly cleanups, hourly aggregations, or weekly digest emails.
Supabase ships with the pg_cron extension, letting you run SQL on a recurring timetable directly inside Postgres.
- No external scheduler to maintain
- Runs close to your data
- Can trigger Edge Functions via HTTP
Enabling pg_cron
Enable the extension once per project. In the Supabase dashboard go to Database > Extensions and toggle pg_cron, or run SQL.
It creates a cron.job table that tracks every scheduled task.
create extension if not exists pg_cron;Anatomy of a Cron Schedule
pg_cron uses standard 5-field cron syntax: minute, hour, day-of-month, month, day-of-week.
0 3 * * *= every day at 03:00*/15 * * * *= every 15 minutes0 0 * * 0= every Sunday at midnight
Scheduling Your First Job
Use cron.schedule(name, schedule, sql) to register a job. Here we delete expired sessions every night at 2 AM.
select cron.schedule(
'nightly-session-cleanup',
'0 2 * * *',
$$ delete from sessions where expires_at < now() $$
);Inspecting Scheduled Jobs
Every job lives in cron.job. Query it to confirm your schedule and find the jobid you will need for updates or removal.
select jobid, schedule, jobname, active from cron.job;Reviewing Run History
pg_cron records each execution in cron.job_run_details. This is your first stop for debugging a job that did not do what you expected.
statusshows success or failurereturn_messagecarries any error text
select jobid, status, return_message, start_time
from cron.job_run_details
order by start_time desc
limit 10;Triggering an Edge Function from Cron
For real workflow logic, call an Edge Function via HTTP using the pg_net extension. The cron job fires the request; the function does the heavy lifting.
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
) $$
);Updating a Job
To change a schedule, simply call cron.schedule again with the same job name. pg_cron replaces the existing definition rather than creating a duplicate.
select cron.schedule(
'nightly-session-cleanup',
'0 4 * * *',
$$ delete from sessions where expires_at < now() $$
);Unscheduling a Job
Remove a job by name with cron.unschedule. Always clean up jobs you no longer need so run history stays meaningful.
select cron.unschedule('nightly-session-cleanup');Idempotency and Overlap
Scheduled jobs can overlap if one run takes longer than its interval. Design jobs to be idempotent and guard against concurrent runs.
- Use advisory locks for long jobs
- Process in bounded batches
- Mark rows as processed before acting
Timezone Awareness
pg_cron schedules run in the database server timezone, typically UTC. A job set for 0 0 * * * fires at UTC midnight, not your local midnight.
Compute local-time offsets explicitly so reports land when users expect them.
Quick Check
Test your understanding of pg_cron scheduling.
Recap
You can now automate recurring workflow steps inside Supabase.
- Enable
pg_cronand use 5-field cron syntax - Schedule with
cron.schedule, remove withcron.unschedule - Trigger Edge Functions via
net.http_post - Audit runs in
cron.job_run_details - Account for UTC timezone and overlapping runs
Belajar Supabase Backend as a Service dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 11
- Pelajaran
- 40
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menjadwalkan Pekerjaan Berulang dengan pg_cron” gratis?
Ya — teks lengkap “Menjadwalkan Pekerjaan Berulang dengan pg_cron” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Supabase Backend as a Service, upgrade ke CoddyKit PRO. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Menjadwalkan Pekerjaan Berulang dengan pg_cron”?
Otomatiskan pekerjaan berulang di dalam Supabase menggunakan pg_cron untuk menjadwalkan pemanggilan Edge Function berkala, pekerjaan pembersihan, dan tugas agregasi data pada jadwal yang andal. Kamu berlatih Supabase Backend as a Service dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Supabase Backend as a Service?
Tidak diperlukan pengalaman sebelumnya. Supabase Backend as a Service di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.
Berapa lama pelajaran “Menjadwalkan Pekerjaan Berulang dengan pg_cron” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Supabase Backend as a Service ini?
Ya. Setiap pelajaran Supabase Backend as a Service menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengintegrasikan Layanan Eksternal
- Antrean Tugas dengan Supabase & Pekerja
- Menjadwalkan Pekerjaan Berulang dengan pg_cron