---
title: Crony
description: Naplánované HTTP požadavky spouštěné podle cron rozvrhu ve vašem projektu.
---

## Úvod

Cron je naplánovaná úloha, kterou Futrou za vás spouští v pravidelných intervalech — sami nic nespouštíte ani neudržujete online. Každý cron patří k projektu, běží v konkrétním **regionu** a účtuje se podle vlastního **plánu**, stejně jako serverlet nebo volume.

Cron má **typ**, který určuje, co se stane, když se spustí:

- **Simple (HTTP)** — zavolá zadanou URL adresu zvolenou HTTP metodou, případně s hlavičkami a tělem požadavku. Hodí se na pravidelné pingy, webhooky nebo prohřívání cache u vašich serverletů či jiných koncových bodů.
- **Code (JS)** — místo volání URL spustí krátký JavaScript kód.

Při každém spuštění podle rozvrhu Futrou provede cron podle jeho typu a zaznamená výsledek.

## Rozvrh

Rozvrh cronu je standardní 5polohový cron výraz: `minuta hodina den měsíc den_v_týdnu`, například `0 * * * *` pro spuštění jednou za hodinu. Podporované jsou zástupné znaky (`*`), rozsahy (`1-5`), výčty (`1,3,5`) i krokové hodnoty (`*/5`), stejně jako v běžném crontab formátu.

Minimální interval je jednou za minutu — kroková hodnota menší než `1` v poli minut (např. `*/0`) je odmítnutá, takže cron nelze naplánovat na častější spouštění než jednou za 60 sekund.

## Plány

Každý cron běží na **cron plánu** — účtovací úrovni, stejný koncept jako [plán serverletu](/cs/docs/serverlet/#plány). Pokud plán nezvolíte sami, cron se vytvoří na výchozím veřejném plánu. Cena se v administraci zobrazuje za minutu i jako odhad měsíčních nákladů, ještě než ji potvrdíte.

## Region

Cron běží v konkrétním **regionu**, nebo ho můžete nechat na **Auto** a nechat Futrou, aby ho přiřadilo automaticky.

## Vytvoření cronu

Při vytvoření cronu zadáváte název, rozvrh a pole podle zvoleného typu:

- **Název** — používá se v administraci.
- **Rozvrh** — cron výraz popsaný výše.
- **Typ** — `simple` (HTTP) nebo `code`.
- U **Simple** cronu: HTTP **metoda** a **URL** k zavolání. Hlavičky a tělo požadavku jsou volitelné.
- U **Code** cronu: **kód** v JavaScriptu, který se spustí.
- **Zapnuto** — jestli se cron podle rozvrhu skutečně spouští; vypnutý cron si drží konfiguraci, ale neběží.

## Testování cronu

Než cron uložíte, můžete ho jednou spustit přes `POST /crons/test` a rovnou vidět výsledek bez vytvoření čehokoli nebo dopadu na rozvrh. Testovací endpoint validuje stejná pole jako vytvoření cronu, okamžitě ho spustí a vrátí výsledek — stav, výstup, dobu trvání a časy začátku a konce — aniž by se cron uložil. Testovací požadavky jsou rate-limitované podle IP, aby nedošlo k nechtěnému zahlcení cílové URL.

## Úprava a smazání

Název, rozvrh, typ, cílová pole, region i zapnutý stav cronu lze po vytvoření kdykoliv změnit přes `PATCH /crons/:cronId`. Smazáním přes `DELETE /crons/:cronId` cron přestane běžet a zcela zmizí.

## Vztah k projektům a serverletům

Crony patří k projektu jako každá jiná služba Futrou a běžně se používají k pravidelnému volání serverletu ve stejném projektu — například k pravidelnému zavolání endpointu `/cron` nebo `/cleanup`. Cron při vytvoření není vázaný na konkrétní serverlet — jednoduše volá URL a metodu, kterou nastavíte, ať už jde o veřejnou adresu serverletu, interní endpoint, nebo libovolnou externí URL.