Projenizi Kullanma

Zamanlanmış İşler (Cron)

Yinelenen bir programa göre kod çalıştırın — pazarları sorgulayın, önbellekleri yenileyin, özetler yayınlayın.

Son güncelleme:

Zamanlanmış işler nedir?

Zamanlanmış iş, FloopFloop'un belirli aralıklarla çağırdığı — her 5 dakikada bir, her saat, yapılandırdığınıza göre gece yarısı günlük vb. — projenizde normal bir HTTP işleyicisidir. Tipik kullanımlar: borsa için piyasa verisi çekme, önbellek yenileme, günlük özet e-postası gönderme, strateji değerlendirip işlem gerçekleştirme.

Her çalışma, herhangi bir iş yapmadan önce doğrulamanız gereken proje kapsamlı bir taşıyıcı tokenla projenizin /api/cron/* altındaki bir rotaya yapılan bir POST isteğidir.

İşleyici yazma

İşleyiciniz normal bir Next.js POST rotasıdır. Herhangi bir iş yapmadan önce taşıyıcı tokeni process.env.FLOOP_CRON_TOKEN ile doğrulayın — diğer istekler 401 almalıdır:

// src/app/api/cron/rebalance/route.ts
import { NextRequest, NextResponse } from "next/server";

export const dynamic = "force-dynamic";

export async function POST(request: NextRequest) {
  const expected = `Bearer ${process.env.FLOOP_CRON_TOKEN ?? ""}`;
  if (request.headers.get("authorization") !== expected) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  // Do your work here — query data, call APIs, etc.
  return NextResponse.json({ ok: true });
}

FLOOP_CRON_TOKEN ortam değişkeni FloopFloop tarafından yönetilir — derleme sırasında projenizin çalışma zamanına eklenir ve Gizli Anahtarlar arayüzünde görünmez.

İşler nasıl kaydedilir

Zamanlanmış işler elle eklenmez, şablon tarafından tanımlanır. Bir şablon, kök dizininde bir floop.crons.json dosyası içerir:

{
  "jobs": [
    {
      "name": "evaluate-strategy",
      "cron": "*/5 * * * *",
      "path": "/api/cron/evaluate-strategy",
      "enabled": true
    }
  ]
}

İlk başarılı dağıtımın ardından FloopFloop bu manifesti okur ve projeniz için işleri kaydeder. Kayıt idempotent'tır — aynı şablonu yeniden dağıtmak işleri çoğaltmaz veya çalıştırma geçmişini sıfırlamaz.

Uygulamanızın farklı bir zamanlamaya ihtiyacı varsa FloopFloop'a sohbetten şablonun floop.crons.json dosyasını güncellemesini isteyin; yeni kadans bir sonraki dağıtımdan itibaren geçerli olur.

Çalıştırma durumu

Her çalışma ok, error veya timeoutdurumuyla kaydedilir. Çalışmayı hatalı olarak işaretlemek için işleyicinizden 2xx dışı bir HTTP durumu döndürün — yanıt gövdesi (en fazla 500 karakter) hata ayıklama için hata mesajı olarak yakalanır.

Sınırlar & kısıtlamalar

  • Proje başına 10 zamanlanmış iş. floop.crons.jsoniçinde 10'dan fazla giriş bildiren şablonlar, kayıt sırasında fazla olanlar reddedilerek işlenir.
  • En az 1 dakikalık aralık. Alt dakika cron ifadeleri kayıt sırasında reddedilir.
  • Çalışma başına 30 saniyelik getirme zaman aşımı. İşleyiciniz daha uzun sürerse dağıtıcı bir timeoutkaydeder ve devam eder.
  • Yalnızca projeniz dağıtılmış ve etkin durumdayken çalışır — yeni oluşturulan ve askıya alınan projeler sessizce atlanır ve yeniden etkinleştirildiğinde otomatik olarak devam eder.
  • Yollar /api/cron/<name> ile eşleşmelidir — bu kısıtlama, cron tetiklemelerini herkese açık rotalarınızdan uzak tutar.