(Cron poslovi · Nautilus)

Cron poslovi izvan ograničenja vašeg hosta Ponavljajući i jednokratni HTTP pozivi, sa ponovnim pokušajima i evidencijom

Udarili ste u ograničenje planera vaše platforme? Nautilus poziva bilo koji javni URL po cron rasporedu koji podesite, do jednom u minuti. Neuspeo poziv se ponavlja, svaki pokušaj se beleži, a rasporedi se podešavaju preko API-ja umesto u konfiguracionom fajlu. Rasporedi rade u UTC.

curl -X POST https://api.vernesoft.com/v1/clockwork/jobs \
  -H "Authorization: Bearer vrn_clockwork_•••" \
  -d '{"name":"billing","schedule":"0 0 1 * *","url":"https://api.yourdomain.com/billing"}'

(Gde cron staje)

Gde staje planer koji već imate

Crontab je u redu na jednoj mašini, a planer platforme je u redu unutar svoje platforme. Problemi počinju na ivici: besplatan plan koji dozvoljava jedno izvršavanje dnevno, drugi server koji dvaput pokrene isti posao, greška koju niko nije video.

Crontab i planeri platformi

  • ✕ Besplatan plan platforme sa ograničenjem: na Vercel Hobbyju cron posao se izvršava najviše jednom dnevno, i to samo sa preciznošću od sat vremena, pa posao zakazan za 01:00 može da krene u bilo kom trenutku do 01:59 (Vercel dokumentacija, provereno 3. oktobra 2026).
  • ✕ Crontab na svakoj instanci: dodajte drugi server i isti obračun se pokreće dvaput.
  • ✕ Bez ponovnih pokušaja: izvršavanje koje padne čeka svoje sledeće zakazano vreme, a ništa ne kaže da je palo, osim ako ste to sami napravili.
  • ✕ Rasporedi žive u konfiguracionom fajlu ili crontabu, pa promena jednog znači deployment, a vaši klijenti ne mogu da podese svoje.

Cron poslovi u Nautilusu

  • ✓ Bilo koji raspored do jednom u minuti, na svakom planu, uključujući besplatan.
  • ✓ Poziva bilo koji javni URL na bilo kom hostu: rutu na Vercelu, VPS, drugi oblak.
  • ✓ Neuspelo izvršavanje se ponavlja, do tri pokušaja, a svaki pokušaj se beleži sa statusom i telom koje je dobio.
  • ✓ Rasporedi se kreiraju, menjaju i pauziraju preko API-ja: bez deploymenta za promenu jednog, a vaši klijenti mogu imati svoje.

(Ključne funkcionalnosti)

Kako se posao izvršava

(01)

Jedno izvršavanje po rasporedu

Raspored živi kod nas, a ne u svakoj instanci vaše aplikacije, pa ga skaliranje aplikacije ne može umnožiti. S naše strane, svako dospelo izvršavanje se rezerviše u bazi pre nego što krene, pa drugi worker koji vidi isti posao zatiče da je već zauzet.

(02)

Rasporedi podešeni preko API-ja

Kreirajte, pauzirajte, menjajte i brišite rasporede preko API-ja, ili zakažite jednokratni zadatak za određeno vreme. Ako vaši klijenti u vašem proizvodu definišu sopstvene ponavljajuće zadatke, vaš backend kreira posao kada oni sačuvaju.

(03)

Ponavljanja koja preživljavaju deploy

Neuspelo izvršavanje dobija do tri pokušaja: prvi, pa ponovne pokušaje jedan i pet minuta kasnije. Stanje ponovnih pokušaja živi uz posao, a ne u memoriji, pa ponovni pokušaj na čekanju preživljava restart workera ili deployment.

(04)

Rezolucija od jednog minuta

Planer se budi jednom u minuti i pokreće ono što je dospelo, pa posao zakazan za 09:00 kreće pri prvoj proveri u 09:00 ili kasnije, a ne negde unutar sata. Nema polja za sekunde, a svaki raspored radi u UTC.

(05)

Evidencija svakog izvršavanja

Svaki pokušaj se beleži sa vremenom početka, trajanjem, HTTP statusom koji je vratio vaš endpoint i telom odgovora, ili greškom ako se poziv nikada nije povezao. Istorija se čuva u okviru vašeg plana, koji je naveden na stranici sa cenama.

(06)

Standardna cron sintaksa

Standardni cron izrazi sa 5 polja, rešavaju se u UTC: nema vremenskih zona ni skraćenih makroa kao što su daily ili hourly. Raspored koji ograničava i dan u mesecu i dan u nedelji odbija se umesto da se pogađa, a isto važi za onaj koji nikada ne može da se pokrene.

(Deo Nautilusa)

Naš sopstveni planer, na istom nalogu

Cron poslovi su jedan deo Nautilusa, na istom nalogu i istoj kontrolnoj tabli kao prijava i isporuka webhookova. Planer je naš sopstveni kod. Prijava i isporuka webhookova rade na open-source enginima koje biste mogli sami da hostujete; ovaj deo ne ide sa vama ako odete. Ono što ide sa vama: svaki posao i svako izvršavanje može se pročitati preko API-ja.

Vaš rasporedNautilus poziva vaš URLVaš endpoint

(Iskustvo programera)

Zakažite job putem API-ja

Dajte mu cron izraz i URL, preko zvaničnog SDK-a ili običnog HTTP zahteva. Jednokratni zadatak umesto toga prima UTC vremensku oznaku.

curl -X POST https://api.vernesoft.com/v1/clockwork/jobs \
  -H "Authorization: Bearer $VERNE_CLOCKWORK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly Billing Run",
    "schedule": "0 0 1 * *",
    "url": "https://api.yourdomain.com/billing/process",
    "method": "POST",
    "body": "{\"batch\":\"auto\"}"
  }'

(FAQ)

Često postavljana pitanja

Kako Nautilus sprečava dupla izvršavanja?

Raspored živi kod nas, pa dodavanje instanci vaše aplikacije ništa ne menja. S naše strane, svako dospelo izvršavanje se rezerviše uslovnim ažuriranjem u bazi pre nego što bilo šta krene: drugi worker koji vidi isti posao zatiče red već pomeren i ne radi ništa. To vam daje jedno okidanje po zakazanom terminu. Sama isporuka je at-least-once, jer se neuspeo pokušaj ponavlja, pa vaš endpoint učinite idempotentnim i koristite zaglavlje X-Clockwork-Attempt da zaštitite sporedne efekte.

Šta se dešava ako ciljni endpoint nije dostupan kada se cron okine?

Svako izvršavanje dobija do tri pokušaja: prvi, pa ponovne pokušaje jedan i pet minuta kasnije. Mrežne greške, 5xx i 429 se ponavljaju; ostali 4xx odgovori ne, jer bi identičan ponovni pokušaj dobio isti odgovor. Svaki pokušaj čeka do 30 sekundi na odgovor, a preusmeravanja se ne prate, pa navedite konačni URL. Svaki pokušaj se beleži sa odgovorom koji je vratio, a ponovni pokušaj na čekanju preživljava restart workera.

Mogu li zakazati jednokratne zadatke (odložene jobove)?

Da. Pored ponavljajućih izraza možete zakazati jednokratni zadatak za UTC vremensku oznaku, na primer slanje e-pošte 24 sata posle registracije. Preuzima se pri proveri planera jednom u minuti, kao i sve ostalo ovde.

Vercel Hobby dozvoljava jedno cron izvršavanje dnevno. Može li Nautilus da poziva moju Vercel funkciju češće?

Da. Posao je HTTP poziv na javni URL, pa može da cilja rutu vašeg deploymenta na Vercelu, sa zaglavljima koja su mu potrebna da prođe vaše provere, do jednom u minuti. Funkcija i dalje radi na Vercelu, pa važe Vercelova ograničenja trajanja i upotrebe; Nautilus samo obavlja poziv, a ta izvršavanja se ne računaju u vašu kvotu zahteva. Radi evidencije, Vercelova dokumentacija (provereno 3. oktobra 2026) uključuje cron na svakom planu, pa i na Hobbyju, ali Hobby ograničava na jedno izvršavanje dnevno sa preciznošću samo do sata; Pro radi po minutu. Ostali staju na sopstvenim ivicama: pg_cron dopire samo do onoga do čega može da dopre vaša baza, a GitHub Actions raspored može da krene sa zakašnjenjem pri velikom opterećenju, prema sopstvenoj dokumentaciji.

Kako da testiram job bez čekanja na raspored?

Kreirajte odloženi posao minut unapred preko POST /v1/clockwork/delayed i pratite ga u evidenciji izvršavanja. Još nema dugmeta za pokretanje odmah. Jednokratno izvršavanje koristi istog workera i iste evidencije kao ponavljajuće.

Postoji li besplatni nivo?

Da, bez kartice. Clockwork ne troši vašu kvotu zahteva: zakazana izvršavanja i pozivi Clockwork API-ja ne računaju se u nju. Ono što svaki plan ograničava jeste broj poslova koji su istovremeno aktivni: besplatan plan dozvoljava 10 ponavljajućih poslova i 100 odloženih poslova na čekanju, Starter 100 i 1.000, Pro 1.000 i 10.000. Starter košta 19 €, a Pro 79 € mesečno; trenutni spisak je na stranici sa cenama.

Hoću li biti obavešten kada posao padne?

Danas ne. Ništa ne šalje upozorenje kada izvršavanje padne. Svaki pokušaj se beleži sa statusom i telom koje je dobio, a evidenciju možete čitati u kontrolnoj tabli ili pozivati endpoint izvršavanja, pa vaša sopstvena provera može da podigne alarm.

(Počnite)

Zakažite svoj prvi posao bez diranja vašeg hosta

Cron poslovi su jedan deo Nautilusa: isti nalog i ista kontrolna tabla kao prijava i isporuka webhookova.

Kada vam ovo ne treba

Ako vodite jednu aplikaciju na jednoj mašini, crontab je sasvim u redu i treba da ostane. Isto važi za posao koji nikada ne napušta svoju platformu: Vercel Cron odgovara Vercel funkciji, pg_cron odgovara jobu koji dodiruje samo vašu Supabase bazu, a GitHub Actions raspored je dovoljan za noćni zadatak koji sme da kasni.

Nautilus zaslužuje svoje mesto na granici gde ovi staju, a ta granica stiže ranije nego što ljudi očekuju. Druga instanca, gde dve kopije istog crontaba dvaput pokreću isti obračun. Posao koji mora da pozove servis na drugom hostu. Raspored koji vaši klijenti podešavaju iz vaše kontrolne table. Besplatan plan koji pokreće dnevni posao negde unutar sata. Izvršavanje koje je palo u 03:00 i nije ostavilo traga.

Ovih pet slučajeva Nautilus rešava: jedno izvršavanje po rasporedu bez obzira na to koliko instanci pokrenete, bilo koji javni URL na bilo kom hostu, rasporedi kreirani i otkazivani preko API-ja, preciznost od minuta na svakom planu i evidencija svakog pokušaja sa odgovorom koji je vratio. Zakazana izvršavanja se ne računaju u vašu kvotu zahteva, a besplatan plan dozvoljava 10 aktivnih ponavljajućih poslova.