Bu kılavuz, Heroku üzerinde PostgreSQL ve Heroku Scheduler kullanarak zamanlanmış bir job tanımlamak için gereken adımları açıklar. İşlem, bir PostgreSQL fonksiyonunu belirli aralıklarla çalıştırmak için Scheduler kullanımıyla ilgilidir.

Ön Gereksinimler

  1. Heroku CLI kurulu olmalıdır. Heroku CLI Kurulumu rehberine göz atabilirsiniz.
  2. PostgreSQL veritabanınız Heroku üzerinde kurulu olmalıdır.
  3. Heroku uygulamanızda çalıştırmak istediğiniz bir PostgreSQL fonksiyonu olmalıdır. Bu kılavuzda örnek olarak public.run_deduplicate_jobs() fonksiyonunu kullanacağız.
  4. PostgreSQL bağlantı bilgilerinize sahip olmanız gerekir. Örneğin: postgres://<username>:<password>@<host>:<port>/<dbname>

Adım 1: Heroku Scheduler Eklentisini Kurma

Heroku Scheduler, Heroku üzerinde zamanlanmış görevler tanımlamak için kullanılan bir eklentidir.

CLI Üzerinden Eklenti Kurulumu

Aşağıdaki komutla Heroku Scheduler eklentisini kurabilirsiniz:

heroku addons:create scheduler:standard --app <app-name>

Notlar:

  • <app-name> yerine kendi uygulamanızın adını yazmayı unutmayın.
  • Eğer uygulamanızın adını bilmiyorsanız, şu komutla öğrenebilirsiniz: bash heroku apps

Kurulum başarıyla tamamlandığında şu mesajı alırsınız:

Creating scheduler:standard on ⬢ <app-name>... free
To manage scheduled jobs run:
heroku addons:open scheduler

Adım 2: Heroku Scheduler Üzerinden Job Tanımlama

Scheduler Eklentisini Açma

Heroku Scheduler arayüzünü açmak için şu komutu kullanabilirsiniz:

heroku addons:open scheduler --app <app-name>

Bu komut, varsayılan tarayıcınızda Scheduler arayüzünü açar. Alternatif olarak, Heroku Dashboard üzerinden şu adımları takip edebilirsiniz:

  1. Dashboard'da uygulamanızı seçin.
  2. Installed Add-ons bölümünden Heroku Scheduler'ı açın.

Yeni Job Ekleme

  1. Scheduler arayüzünde Add Job butonuna tıklayın.
  2. Run Command kısmına PostgreSQL komutunuzu yazın: bash psql "postgres://<username>:<password>@<host>:<port>/<dbname>" -c "SELECT public.run_deduplicate_jobs();"
  3. Frequency (Zamanlama) seçeneğini belirleyin. Örneğin:
  4. Every 10 minutes (Her 10 dakikada bir)
  5. Hourly (Her saat)
  6. Dyno Size kısmında "Basic" veya ihtiyacınıza göre başka bir seçeneği seçin.
  7. Job'u kaydedin.

Adım 3: Görevin Çalıştığını Kontrol Etme

Heroku Logs ile Çalışmayı İzleme

Scheduler job'unun çalışıp çalışmadığını görmek için Heroku loglarını kontrol edebilirsiniz:

heroku logs --tail --app <app-name>

Bu loglarda, komutun çalıştığını veya herhangi bir hata olup olmadığını görebilirsiniz. Örneğin:

Deduplication işlemi tamamlandı.

PostgreSQL'de Sonuçları Doğrulama

Job'un düzgün çalışıp çalışmadığını PostgreSQL veritabanında kontrol edebilirsiniz. Örneğin:

SELECT * FROM appointment_logs;
SELECT * FROM unique_appointments;

Örnek PostgreSQL Fonksiyonu

Aşağıda, zamanlanmış job'da çalıştırmak üzere örnek bir PostgreSQL fonksiyonu verilmiştir:

CREATE OR REPLACE FUNCTION public.run_deduplicate_jobs()
RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
    -- Duplicate kayıtları temizleme işlemleri buraya eklenir.
    RAISE NOTICE 'Deduplication işlemi tamamlandı.';
END;
$$;

Bu fonksiyonu, veritabanınıza kaydedip job'da çağırabilirsiniz.


Önemli Notlar

  1. Scheduler job'larının doğru çalışabilmesi için PostgreSQL fonksiyonunuzun tanımlı ve çalışabilir durumda olması gerekir.
  2. Scheduler kullanımı sırasında uygulamanızın Dyno kotalarını aşmadığınızdan emin olun.
  3. Eğer loglarda bir hata görürseniz, veritabanı bağlantısı veya fonksiyon ile ilgili bir sorun olup olmadığını kontrol edin.

Bu kılavuz, Heroku üzerinde PostgreSQL job'larının nasıl zamanlanacağını göstermektedir. İşlem sırasında herhangi bir hata ile karşılaşırsanız, Heroku loglarını ve PostgreSQL ayarlarını kontrol edin.

Twisting Vines with Large Blooms
“Create a tightly woven cluster of thick vines and large, exotic blooms, all in bold black outlines. Arrange them in a central mass without forming a frame, keeping everything strictly flat and away from the canvas boundary.”