Orbit
Orbit Cron-Jobs
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-Jobs planen wiederkehrende HTTP-Anfragen zu Ihrem bereitgestellten Projekt ein, sodass eine nächtliche Bereinigung, eine stündliche Synchronisierung oder eine wöchentliche Zusammenfassung ohne einen separaten Scheduler pünktlich läuft.
Wo sich Cron-Jobs befinden
Öffnen Sie Orbit, klicken Sie auf das Projekt und wählen Sie Crons unter der Gruppe Configure im Projekt-Reiter. Die Seite trägt den Titel Cron jobs und beschreibt ihre Funktion: Sie plant HTTP-Anfragen zu Ihrer Produktionsbereitstellung, unter Verwendung der Standard-Cron-Syntax mit fünf Feldern in UTC oder die Aliase @hourly, @daily, @weekly und @monthly.
Die Seite zeigt den Target host, den sie aufruft, sodass Sie auf einen Blick bestätigen können, dass er auf die richtige Bereitstellung verweist.

Wie es funktioniert
Orbit führt Ihren Code nicht in einem Scheduler aus. Es ruft nach einem Plan eine URL auf Ihrem eigenen Projekt auf, und Ihr Code führt die Arbeit aus.
Das bedeutet, dass das, was Sie einplanen, eine gewöhnliche Route in Ihrer Anwendung ist, zum Beispiel /api/cron/cleanup. Alles, was Ihre App als Reaktion auf eine Anfrage kann, kann es nach einem Plan tun.
Erstellen eines Cron-Jobs
- Klicken Sie auf New cron.
- Geben Sie einen Name ein, bis zu 120 Zeichen.
- Legen Sie den Path in Ihrem Projekt fest, beginnend mit einem Schrägstrich.
- Wählen Sie einen Schedule aus den Voreinstellungen oder geben Sie einen Ausdruck ein.
- Wählen Sie eine Method.
GETist die Standard. - Fügen Sie einen Request body hinzu, wenn die Methode POST, PUT oder PATCH ist.
- Legen Sie ein Timeout zwischen 1 und 300 Sekunden fest. Der Standard ist 30.
- Lassen Sie die Option Generate a Bearer secret aktiviert, es sei denn, Sie haben Ihre eigene Authentifizierung.
- Klicken Sie auf Create cron.
Zeitplan-Voreinstellungen
| Voreinstellung | Ausdruck |
|---|---|
| Alle 5 Min. | */5 * * * * |
| Alle 15 Min. | */15 * * * * |
| Stündlich | @hourly |
| Täglich 09:00 UTC | 0 9 * * * |
| Täglich Mitternacht | @daily |
| Wöchentlich Mo 09:00 | 0 9 * * 1 |
| Monatlich 1. | @monthly |
Oder schreiben Sie Ihren eigenen Ausdruck mit fünf Feldern: Minute, Stunde, Tag des Monats, Monat, Tag der Woche.
Alle Zeitpläne sind UTC, ohne Anpassung an die Sommerzeit. Ein Job, der für 0 9 * * * eingestellt ist, läuft das ganze Jahr über um 9 Uhr UTC, was sich zweimal im Jahr um eine Stunde gegenüber der neuseeländischen Zeit verschiebt. Wenn ein Job zu einer bestimmten lokalen Zeit laufen muss, wählen Sie die UTC-Stunde bewusst aus und notieren Sie, für welche Jahreshälfte Sie optimiert haben.
Authentifizierung des Aufrufs
Wenn Sie die Bearer-Secret-Option aktiviert lassen, wird ein zufälliges Token generiert, das bei jeder Ausführung als Authorization-Header gesendet wird. Es wird einmal angezeigt, unmittelbar nach der Erstellung, mit dem Hinweis, dass es nicht erneut angezeigt wird.
Kopieren Sie es und überprüfen Sie es in Ihrem Handler:
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
}
Speichern Sie das Secret mithilfe der Umgebungsvariablen des Projekts: siehe Environment Variables in Orbit.
Ohne eine Überprüfung wie diese ist Ihr Cron-Pfad eine öffentliche URL, die jeder beliebig oft aufrufen kann. Das ist in Ordnung für etwas Harmloses und ernstaft für alles, das schreibt, E-Mails sendet oder Geld kostet. Fügen Sie die Überprüfung vor dem ersten Lauf hinzu, nicht nachdem jemand den Endpoint gefunden hat.
Sie können auch Ihre eigenen Header senden, wenn Ihre Anwendung bereits ein Authentifizierungsschema hat.
Lesen der Job-Liste
Jeder Job zeigt:
- Schedule, der Ausdruck, nach dem er läuft.
- Next, wann er das nächste Mal läuft.
- Last, wann er zuletzt gelaufen ist und wie das funktioniert hat.
- Ein ok / fail-Zähler.
- Last error, wo der letzte Fehler eine Nachricht hinterlassen hat.
- Ein PAUSED-Abzeichen, wenn es ausgeschaltet ist.
Vier Aktionen befinden sich auf jeder Zeile: Run now, Pause oder Resume und Delete.
Run now führt den Job sofort aus, unabhängig von seinem Zeitplan, und meldet das Ergebnis. Dies ist die richtige Methode, um einen neuen Job zu testen, anstatt auf den nächsten Tick zu warten.
Ausführungsergebnisse
| Status | Bedeutung |
|---|---|
| OK | Ihr Endpoint hat eine erfolgreiche Antwort zurückgegeben |
| FAILED | Ihr Endpoint hat einen Fehler zurückgegeben, oder die Anfrage konnte nicht gestellt werden |
| TIMEOUT | Ihr Endpoint hat nicht innerhalb des Timeouts geantwortet |
| SKIPPED | Die Ausführung wurde nicht ausgeführt |
Jede Ausführung wird mit ihrem Status, Antwortcode, Dauer, Fehler und Auslöser aufgezeichnet, sodass ein Job, der intermittierend fehlschlägt, eine Spur hinterlässt, die Sie lesen können, anstatt einen einzelnen "letzten Fehler".
Wahl eines Timeouts
Das Timeout ist pro Ausführung zwischen 1 und 300 Sekunden und beträgt standardmäßig 30.
Legen Sie es ein wenig über den echten schlimmsten Fall des Jobs fest, nicht viel höher. Ein großzügiges Timeout bei einem Job, der hängen geblieben ist, bedeutet fünf Minuten, in denen ein Builder auf nichts wartet. Ein enges Timeout bei einem Job, der legitim zwei Minuten dauert, bedeutet einen permanenten Fehler und eine irreführende Warnung.
Besser noch: Halten Sie den Handler schnell: Lassen Sie ihn Arbeit in die Warteschlange einreihen und sofort zurückkehren, anstatt die Arbeit inline zu erledigen. Ein Cron-Job, der in 200 Millisekunden zurückkommt, läuft niemals ab.
Limits
Ein Projekt kann bis zu 50 Cron-Jobs enthalten. Das ist pro Projekt, sodass ein Konto mit mehreren Projekten insgesamt mehr hat.
Wenn Sie etwas gegen Staging statt gegen Produktion einplanen müssen, verwenden Sie stattdessen Cron triggers in Settings. Diese Karte lässt Sie die Umgebung auswählen und ist auf zehn Trigger pro Projekt begrenzt. Siehe Orbit Project Settings.
Löschen eines Jobs
Klicken Sie auf Delete und bestätigen Sie. Die Bestätigung vermerkt, dass auch der Ausführungsverlauf entfernt wird, sodass Sie den Verlauf erfassen sollten, wenn Sie einen Datensatz darüber erhalten möchten, wie sich ein Job verhalten hat, bevor Sie ihn löschen.
Halten Sie inne, anstatt zu löschen, wenn Sie einen Job vorübergehend unterbrechen. Das Pausieren behält die Konfiguration, das Secret und den Verlauf intakt.
Praktische Ratschläge
Machen Sie Handler idempotent. Ein Cron-Aufruf kann erneut versucht werden, und Run now kann gedrückt werden, während eine geplante Ausführung bereits laufen. Ihr Handler sollte damit umgehen können, zweimal zu laufen, ohne die Arbeit zweimal zu erledigen.
Planen Sie nicht alles zur vollen Stunde ein. 0 * * * * bei jedem Job bedeutet, dass jeder Job im gleichen Moment konkurriert. Verteilen Sie sie: 7 * * * *, 23 * * * * und so weiter.
Loggen Sie in Ihrem Handler. Der Ausführungsdatensatz zeigt Ihnen den Antwortcode und die Dauer. Was tatsächlich passiert ist, ist die Angelegenheit Ihrer Anwendung, und Sie werden es benötigen, wenn ein Job stillschweigend nichts tut.
Troubleshooting
Jede Ausführung ist FAILED mit einer 401. Ihr Handler lehnt die Anfrage ab. Überprüfen Sie, ob das in Ihren Umgebungsvariablen gespeicherte Secret mit dem hier generierten übereinstimmt, einschließlich des Bearer -Präfix beim Vergleich.
Jede Ausführung ist FAILED mit einer 404. Der Pfad existiert nicht im bereitgestellten Projekt. Testen Sie ihn in einem Browser gegen den auf der Seite angezeigten Target Host.
Ausführungen TIMEOUT. Der Handler macht zu viel inline. Teilen Sie die Arbeit auf, oder erhöhen Sie das Timeout, wenn die Arbeit tatsächlich so lange dauert und nicht abläuft.
Next wird nicht vorangetrieben. Der Job ist angehalten. Suchen Sie nach dem PAUSED-Abzeichen.
Der Job läuft zur falschen Zeit. Überprüfen Sie UTC gegenüber Ihrer lokalen Zeit. Dies ist die häufigste Überraschung bei geplanten Jobs.
Wo Sie als Nächstes hinwechseln
- Environment Variables in Orbit zum Speichern des Cron-Secrets.
- Orbit Project Settings für Cron-Trigger pro Umgebung.
- Orbit Webhooks, um benachrichtigt zu werden, wenn etwas schiefgeht.