Paralelní cron - PostponedTaskCron

PostponedTaskCron může spouštět od verze 5.7.40 naplánované úkoly. Jedná se o tzv. "Paralelní cron" tedy cron, který může být naklonován a pouštěn vícekrát. Umožňuje tak odbavovat větší množství dlouhotrvajících úloh.

Před spuštěním PostponedTaskCron je potřeba deaktivovat cron Cron! Poté už ho nezapínat, PostponedTaskCron nahrazuje původní Cron!

Postup nasazení paralelního fungování

Pro využití PostponedTaskCron k paralelnímu odbavování naplánovaných úkolů je potřeba následující postup:

  1. Vypnout cron Cron
  2. Vytvořit tolik instancí PostponedTaskCron, kolik potřebujete a dovolí vám výkon. Doporučuje se začít s 2 a postupně navyšovat.
  3. Každé instanci nastavit spouštění každých například 5 minut, posunuté o 1 minutu od předchozí (aby se crony nespouštěly ve stejný čas).
  4. Střídavě nastavit parametr startFromNewest — sudé instance true, liché false (crony proti sobě)
  5. U všech instancí nastavit nízkou hodnotu parametru limit (např. 10)
Příklad konfigurace 4 instancí:
PostponedTaskCron 1 – 10:01, každých 5 min, limit: 10, startFromNewest: false
PostponedTaskCron 2 – 10:02, každých 5 min, limit: 10, startFromNewest: true
PostponedTaskCron 3 – 10:03, každých 5 min, limit: 10, startFromNewest: false
PostponedTaskCron 4 – 10:04, každých 5 min, limit: 10, startFromNewest: true
Klíčová doporučení: nastavit nízký limit, spouštět crony často, střídat směr řazení (startFromNewest) a zajistit, aby se jednotlivé instance nespouštěly ve stejný čas.

Konfigurace

V rámci cronu lze nastavit následující parametry:

fromTime

Definuje od kdy bude cron brát naplánované úkoly. Může být vložen string nebo timestamp. Default je nastaven na null (což znamená 1970). Toto nastavení se hodí v případě kdy by z nějakého důvodu bylo potřeba nastavit další cron až od nějakého specifického data. Je to pojistka v podstatě pro to když by se nějaký cron vytížil a nešel spustit další.

lockTtl

Doba na jakou se zamkne úkol, po tuto dobu není možné úkol aktivovat. Aby cron zpracoval a aktivoval naplánovaný úkol musí projít zápis unikátního záznamu do Redis. Pokud ho nezíská, úkol přeskočí. Tím se zajistí, že se dva a více cronů nesnaží najednou aktivovat stejný úkol. Zámky se explicitně neodemykají, ale nechává se jim vypršet jejich platnost. Výchozí hodnota je 30 minut (1800000 ms). Takový úkol je tedy možné zaktivovat až po daném termínu.

limit

Dostupné od verze 5.7.71. Maximální počet položek zpracovaných v jednom běhu. Limit se aplikuje zvlášť pro Events a InstanceTasks. Typ: number. Výchozí hodnota: 1000.

startFromNewest

Dostupné od verze 5.7.71. Určuje pořadí řazení zpracovávaných úkolů. Hodnota true znamená řazení od nejnovějších po nejstarší, hodnota false od nejstarších po nejnovější. Typ: boolean. Výchozí hodnota: false.

Frantisek Brych Updated by Frantisek Brych

Crons

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)