Orbit

Orbit Cron İşleri

Cron jobs schedule recurring HTTP requests to your deployed project, so a nightly cleanup, an hourly sync or a weekly digest runs on time without you standing up a separate scheduler.

Cron işleri, dağıtılan projenize yönelik tekrarlanan HTTP isteklerini zamanlar, böylece gece temizliği, saatlik senkronizasyon veya haftalık özet ayrı bir planlayıcı kurmanıza gerek kalmadan zamanında çalışır.

Cron İşleri Nerede Bulunur

Orbit açın, projeyi tıklayın ve proje sekme şeridinde Configure grubu altında Crons seçeneğini seçin. Sayfanın başlığı Cron jobs ve ne yaptığını açıklar: UTC'de standart beş alanlı cron sözdizimini veya @hourly, @daily, @weekly ve @monthly takma adlarını kullanarak HTTP isteklerini üretim dağıtımınıza zamanla.

Sayfada çağrı yapacağı Target host gösterilir, böylece doğru dağıtıma işaret ettiğini bir bakışta doğrulayabilirsiniz.

Bir Orbit projesi için Cron işleri sayfası

Nasıl Çalışır

Orbit kodunuzu bir planlayıcıda çalıştırmaz. Projenizin bir URL'sini zamanlamaya göre çağırır ve kodunuz işi yapar.

Bu, zamanladığınız şeyin uygulamanızdaki sıradan bir rota olması anlamına gelir, örneğin /api/cron/cleanup. Uygulamanızın bir isteğe yanıt olarak yapabileceği herhangi bir şey, zamanlamaya göre yapabilir.

Cron İşi Oluşturma

  1. New cron tıklayın.
  2. Buna bir Name verin, en fazla 120 karakter.
  3. Projenizde Path ayarlayın, eğik çizgiyle başlayarak.
  4. Schedule seçeneğinden bir ön ayar seçin veya bir ifade yazın.
  5. Method seçin. GET varsayılandır.
  6. Yöntem POST, PUT veya PATCH ise Request body ekleyin.
  7. Timeout ayarını 1 ile 300 saniye arasında ayarlayın. Varsayılan değer 30'dur.
  8. Kendi kimlik doğrulamanız yoksa Generate a Bearer secret seçeneğini işaretli bırakın.
  9. Create cron tıklayın.

Schedule Ön Ayarları

Ön Ayarİfade
Her 5 dakika*/5 * * * *
Her 15 dakika*/15 * * * *
Saatlik@hourly
Günlük 09:00 UTC0 9 * * *
Günlük gece yarısı@daily
Haftalık Pazartesi 09:000 9 * * 1
Aylık 1.@monthly

Veya kendi beş alanlı ifadenizi yazın: dakika, saat, ayın günü, ay, haftanın günü.

Tüm zamanlamalar UTC'dedir ve gün ışığından yararlanma ayarlaması yoktur. 0 9 * * * için ayarlanan bir iş, yıl boyunca 9am UTC'de çalışır; bu, Yeni Zelanda saatine göre yılda iki kez bir saatlik sürüklenme yaşar. Bir iş belirli bir yerel saatte çalışmalıysa, UTC saatini kasten seçin ve yıl içinde hangi yarısı için optimize ettiğinizi not edin.

Çağrıyı Kimlik Doğrulama

Bearer secret seçeneğini işaretli bırakmak, her yürütmede Authorization başlığı olarak gönderilen rastgele bir token oluşturur. Oluşturulduktan hemen sonra gösterilir ve bir daha gösterilmeyeceği notu ile birlikte gelir.

Kopyalayın ve işleyicinizde kontrol edin:

export async function GET(req) {
  const auth = req.headers.get('authorization');
  if (auth !== `Bearer ${process.env.CRON_SECRET}`) {
    return new Response('Unauthorized', { status: 401 });
  }
  // do the work
}

Sırrı projenizin ortam değişkenlerini kullanarak saklayın: bkz. Environment Variables in Orbit.

Bunun gibi bir kontrol olmadan, cron yolunuz herkesin istediği kadar sık çağırabileceği genel bir URL'dir. Bu, zararsız bir şey için sorun değildir ancak yazma, e-posta gönderme veya para harcayan herhangi bir şey için ciddidir. İlk çalıştırmadan önce kontrol ekleyin, birisi uç noktayı bulduktan sonra değil.

Uygulamanızın zaten bir kimlik doğrulama şeması varsa, bunun yerine kendi başlıklarınızı gönderebilirsiniz.

İş Listesini Okuma

Her iş şunu gösterir:

  • Schedule, çalıştığı ifade.
  • Next, bir sonraki çalışma zamanı.
  • Last, son çalışma zamanı ve sonucu.
  • Bir ok / fail sayacı.
  • Last error, en son hatanın bir mesaj bıraktığı yer.
  • Kapalı olduğunda bir PAUSED rozeti.

Her satırda dört eylem vardır: Run now, Pause veya Resume ve Delete.

Run now, zamanlamasından bağımsız olarak işi hemen yürütür ve sonucu bildirir. Bir sonraki kaşıya kadar beklemek yerine yeni bir işi test etmenin doğru yoludur.

Yürütme Sonuçları

DurumAnlamı
OKUç noktanız başarı yanıtı döndürdü
FAILEDUç noktanız bir hata döndürdü veya istek yapılamadı
TIMEOUTUç noktanız zaman aşımı içinde yanıt vermedi
SKIPPEDYürütme çalışmadı

Her yürütme, durumu, yanıt kodu, süresi, hatası ve onu tetikleyen şey ile kaydedilir, bu nedenle ara sıra başarısız olan bir iş, tek bir "last error" yerine okunabileceğiniz bir iz bırakır.

Zaman Aşımı Seçme

Zaman aşımı yürütme başına, 1 ile 300 saniye arasında, varsayılan olarak 30'dur.

İşin gerçek en kötü durumunun biraz üstüne ayarlayın, çok üstüne değil. Asılı kalan bir iş üzerinde cömert bir zaman aşımı, bir inşaatçının hiçbir şey için beklemesi beş dakika anlamına gelir. Meşru şekilde iki dakika süren bir iş üzerinde sıkı bir zaman aşımı, kalıcı bir hatayı ve yanıltıcı bir uyarıyı anlamına gelir.

Daha da iyi, işleyiciyi hızlı tutun: işi sıraya alması ve hemen geri dönmesi yerine, işi satır içi yapmaktan kaçının. 200 milisaniyede dönen bir cron işi asla zaman aşımına uğramaz.

Limitler

Bir proje en fazla 50 cron işi tutabilir. Bu proje başına, bu nedenle birkaç projeye sahip bir hesap toplamda daha fazlasına sahiptir.

Üretim yerine hazırlama karşısında bir şey zamanlamanız gerekiyorsa, bunun yerine Settings içinde Cron triggers kullanın. Bu kart ortamı seçmenize izin verir ve proje başına on tetikleyici ile sınırlandırılır. Bkz. Orbit Project Settings.

İşi Silme

Delete tıklayın ve onaylayın. Onay, yürütme geçmişinin de kaldırılacağını not eder, bu nedenle bir işin davranış şeklinin bir kaydını istiyorsanız, silmeden önce yakala.

Bir işi geçici olarak durdururken silmek yerine duraklatın. Duraklatma, yapılandırmayı, sırrı ve geçmişi bintact tutar.

Pratik Tavsiye

İşleyicileri idempotent yapın. Bir cron çağrısı yeniden denenebilir ve Run now zamanlanmış bir çalıştırma zaten devam ederken basılabilir. İşleyiciniz işi iki kez yapmadan iki kez çalışmaya katlannmalıdır.

Her şeyi saatin başında zamanlamayın. Her işte 0 * * * *, her işin aynı anda rekabet etmesi anlamına gelir. Yayılı yapın: 7 * * * *, 23 * * * *, vb.

İşleyici içinde günlük kaydedin. Yürütme kaydı size yanıt kodunu ve süreyi söyler. Gerçekte neler olduğu uygulamanızın işidir ve bir iş sessizce hiçbir şey yapmazsa bunu isteyeceksiniz.

Sorun Giderme

Her yürütme, 401 ile FAILED olur. İşleyiciniz isteği reddediyor. Ortam değişkenlerinizde depolanan sırrın burada oluşturulan sırrla eşleştiğini kontrol edin; karşılaştırmada Bearer önekini de kontrol edin.

Her yürütme, 404 ile FAILED olur. Yol, dağıtılan projede mevcut değildir. Sayfada gösterilen hedef konakta bir tarayıcıda test edin.

Yürütmeler TIMEOUT olur. İşleyici satır içinde çok fazla şey yapıyor. İşi bölün veya iş gerçekten o kadar uzun sürer ve bir kaçış değilse zaman aşımını yükseltin.

Next hiçbir zaman ilerlemez. İş duraklatıldı. PAUSED rozetini arayın.

İş yanlış saatte çalışır. UTC'yi yerel saatinizle kontrol edin. Bu, zamanlanmış işlerde en yaygın sürprizdir.

Sonra Nereye Gideceksiniz

Hala yardıma mı ihtiyacınız var?

Bize şu adresinden e-posta gönderin: support@kapsulehost.com ya da KPanel'de sohbet açın.

KPanel'i Aç