← Cloudflare Workflows / workflows / reference
Limity
Limity, které platí pro vytváření, nasazování a spouštění Workflows, jsou podrobně popsány níže.
Mnohé limity jsou zděděny z limitů platných pro skripty Workers a jsou zdokumentovány v Limity Workers dokumentace.
| Funkce | Workers Free | Workers Paid |
|---|---|---|
| Definice tříd Workflow na skript | 3MB max. velikost skriptu na Limity velikosti Workeru | 10MB max. velikost skriptu na Limity velikosti Workeru |
| Celkový počet skriptů na účet | 100 | 500 (sdíleno s Limity skriptů Worker |
| Výpočetní čas na krok 1 | 10 ms | 30 sekund (výchozí) / nastavitelné až na 5 minut aktivní doba CPU |
| Doba trvání (reálný čas) na krok 1 | Neomezeně | Neomezeno, například čekání na síťové vstupně-výstupní operace nebo dotazy do databáze |
| Maximální velikost nestreamovaného výsledku na krok 2 | 1MiB (2^20 bajtů) | 1MiB (2^20 bajtů) |
| Maximální velikost payloadu | 1MiB (2^20 bajtů) | 1MiB (2^20 bajtů) |
| Maximální stav, který lze uchovat na instanci Workflow 3 | 100MB | 1GB |
Maximální doba trvání step.sleep doba trvání |
365 dní (1 rok) | 365 dní (1 rok) |
| Maximální počet kroků na Workflow 4 | 1,024 | 10,000 (výchozí) / lze nastavit až na 25,000 |
| Maximální počet spuštění Workflow | 100,000 za den sdílený s denním limitem Workers | Neomezeně |
| Souběžné instance Workflow (spuštění) na účet 5 | 100 | 50,000 |
| Maximální rychlost vytváření instancí Workflow 6 | 100 za sekundu 7 | 300 za sekundu na účet 7, 100 za sekundu na workflow |
| Maximální počet instance ve frontě | 100,000 | 2,000,000 |
| Limit uchovávání stavu dokončené instance Workflow | 3 dny | 30 dní 8 |
| Maximální délka názvu Workflow 9 | 64 znaků | 64 znaků |
| Maximální délka ID instance Workflow 9 | 100 znaků | 100 znaků |
| Maximální počet subrequestů na instanci Workflow | 50/požadavek | 10,000/požadavek (výchozí) / lze nastavit až na 10 milionů |
| Maximální počet opakování na krok | 10,000 | 10,000 |
Pokud potřebujete ve Workflows v JavaScriptu uchovat velký binární výstup z kroku, vraťte ReadableStream<Uint8Array>. Streamované výstupy se stále započítávají do limitu úložiště na instanci, proto velmi velké nebo dlouhodobě uchovávané artefakty ukládejte do externího úložiště, například R2 a v případě potřeby vrátit odkaz.
waiting instance se nezapočítávají do limitů souběžnosti instancí
Instance, které jsou ve stavu waiting stavu, ať už prostřednictvím uspání pomocí step.sleep, čeká na opakování, nebo čeká na událost prostřednictvím step.waitForEvent, provede ne se započítávají do limitů souběžnosti. To znamená, že můžete mít současně miliony instancí Workflow, které spí nebo čekají na události, protože se počítají pouze aktivně running instance se započítávají do limitu 10,000 souběžných instancí.
Pokud je však aktivně spuštěno 10,000 souběžných instancí, instance, která byla ve stavu waiting stavu budou zařazeny do fronty místo okamžitého pokračování.
Když instance přejde ze stavu running na waiting, ostatní queued instance budou naplánovány (obvykle nejstarší instance v čekání, na základě nejlepší snahy). K tomuto přechodu stavu nemusí dojít, pokud je doba čekání velmi krátká.
Představte si například Workflow, který vykoná určitou práci, počká 30 dní a poté pokračuje další prací:
import {
WorkflowEntrypoint,
WorkflowStep,
WorkflowEvent,
} from "cloudflare:workers";
type Env = {
MY_WORKFLOW: Workflow;
};
export class MyWorkflow extends WorkflowEntrypoint<Env> {
async run(event: WorkflowEvent<unknown>, step: WorkflowStep) {
await step.do("initial work", async () => {
let resp = await fetch("https://api.cloudflare.com/client/v4/ips");
return await resp.json<any>();
});
await step.sleep("wait 30 days", "30 days");
await step.do(
"make a call to write that could maybe, just might, fail",
{
retries: {
limit: 5,
delay: "5 seconds",
backoff: "exponential",
},
timeout: "15 minutes",
},
async () => {
if (Math.random() > 0.5) {
throw new Error("API call to $STORAGE_SYSTEM failed");
}
},
);
}
}Pokud daná instance Workflow čeká 30 dní, přejde do stavu waiting stavu, což umožňuje jiným queued instance ke spuštění, pokud jsou dosaženy limity souběžnosti.
Instance spouštěné cronem na Workers Paid
Na Workers Paid, instance Workflow vytvořené schedules může běžet až jednu hodinu na jedno spuštění cronu, aniž by spotřeboval slot souběžnosti Workflow.
Jakmile je tento rozpočet vyčerpán, instance se pozastaví a zařadí do běžné fronty souběžnosti. Pokračuje ve chvíli, kdy je k dispozici volný slot souběžnosti. Kvůli vyčerpání tohoto cron rozpočtu souběžnosti instance neselže, nedojde jí čas ani se neukončí.
Následující omezení platí pro Workflow schedules:
| Limit | Hodnota |
|---|---|
Maximální počet schedules (cron výrazy) na účet |
100 |
| Maximální délka cron výrazu | 256 znaků |
Zvýšení limitů počtu kroků pro Workflow
Každá instance Workflow standardně podporuje 10,000 kroků, ale v konfiguraci nástroje Wrangler lze tento limit zvýšit až na 25,000 kroků. Více informací najdete v Limity kroků Workflow s dalšími informacemi.
Zvýšení limitů CPU pro Workflow
Workflows jsou skripty Workers a sdílejí stejné limity CPU na jedno volání stejně jako kterýkoli Worker. Upozorňujeme, že čas CPU je aktivní doba zpracování: nezahrnuje čas strávený čekáním na síťové požadavky, volání úložiště ani jiné běžné vstupně výstupní operace, které se do vašeho času CPU ani spotřeby výpočetního výkonu Workflows nezapočítávají.
Pokud váš Workflow překročí limit doby využití CPU, vyvolá následující chybu:
Error: Worker exceeded CPU time limit.Zobrazí se jako exceededCpu v wrangler tail výsledky a jako exceededResources v Metriky Workers.
Maximální doba CPU na jedno spuštění Workflow je ve výchozím nastavení 30 sekund, lze ji ale zvýšit pro všechna spuštění patřící k dané definici Workflow nastavením limits.cpu_ms ve vaší konfiguraci Wrangler:
{
// ...rest of your configuration...
"limits": {
"cpu_ms": 300000, // 300,000 milliseconds = 5 minutes
},
// ...rest of your configuration...
}[limits]
cpu_ms = 300_000Chcete-li se dozvědět více o CPU čase a limitech, prostudujte dokumentaci Workers.
Zvýšení limitů subrequestů pro Workflow
Subrequest je jakýkoli požadavek, který Workflow odešle buď na internetové zdroje pomocí Fetch API nebo požadavky na jiné služby Cloudflare, jako je R2, KV, nebo D1. Protože Workflows běží dlouhodobě a často provádějí mnoho volání externích služeb nebo Cloudflare API, mohou překročit výchozí limit subrequestů.
Pokud váš Workflow překročí limit počtu subrequestů, vyvolá následující chybu:
Error: Too many subrequests.Zobrazí se jako exceededResources v Metriky Workers a jako exception v wrangler tail výsledky.
Maximální počet subrequestů na jednu instanci Workflow je ve výchozím nastavení 10,000 v plánech Workers Paid, ale lze jej zvýšit až na 10 milionů nastavením limits.subrequests ve vaší konfiguraci Wrangler:
{
// ...rest of your configuration...
"limits": {
"subrequests": 10000000, // 10 million (maximum)
},
// ...rest of your configuration...
}[limits]
subrequests = 10_000_000Workers na bezplatném plánu mají limit 50 externích subrequestů a 1,000 subrequestů do služeb Cloudflare na jedno volání.
Další informace o limitech dílčích požadavků najdete prostudujte dokumentaci Workers.
Limity reálného času podle typu vyvolání
Reálný čas (anglicky též "wall-clock time") představuje celkovou dobu od začátku do konce vyvolání, včetně času stráveného čekáním na síťové požadavky, I/O operace a další asynchronní operace. Liší se od Čas CPU, které měří pouze čas, který CPU stráví aktivním prováděním vašeho kódu.
Následující tabulka shrnuje limity reálného času pro různé typy vyvolání Workeru v rámci vývojářské platformy:
| Invocation type | Limit reálného času | Podrobnosti |
|---|---|---|
| Příchozí HTTP požadavek | Neomezeně | Žádný pevný limit, dokud zůstává klient připojen. Worker, který stále streamuje tělo odpovědi, zůstává aktivní. waitUntil() prodlužuje běh až o 30 sekund po odeslání odpovědi nebo odpojení. |
| Cron Triggers | 15 minut | Naplánovaní Workers mají maximální reálný čas běhu 15 minut na jedno vyvolání. |
| Queue consumers | 15 minut | Každé volání consumeru má maximální reálný čas běhu 15 minut. |
| Obslužné rutiny alarmů v Durable Object | 15 minut | Volání alarm handleru mají maximální reálnou dobu běhu (wall time) 15 minut. |
| Durable Objects (RPC / HTTP) | Neomezeně | Žádný pevný limit, dokud zůstává volající připojen k Durable Object. Durable Objects zůstávají aktivní, dokud probíhá požadavek, RPC volání, stream odpovědi, WebSocket nebo čekající I/O operace. |
| Workflows (na krok) | Neomezeně | Každý krok může běžet po neomezenou dobu. Na jednotlivé kroky se vztahuje nakonfigurovaný Limit CPU času. |
Poznámky pod čarou
-
Instance Workflow může běžet neomezeně dlouho, pokud žádný krok nepřekročí limit CPU času a není dosažen maximální počet kroků na Workflow. ↩ ↩2
-
Platí pro nestreamované
step.do()návratové hodnoty. V JavaScript WorkflowsReadableStream<Uint8Array>je také podporovaný serializovatelný návratový typ pro větší binární výstup. ↩ -
Tento součet zahrnuje persistované bajty ze streamovaných výstupů kroků vrácených z JavaScriptu
step.do()volání. ↩ -
step.sleepse nezapočítává do limitu maximálního počtu kroků ↩ -
Do limitů souběžnosti se započítávají pouze instance se stavem
runningstav se započítává do limitů souběžnosti. Instance ve stavuwaitingstavy jsou z těchto limitů vyloučeny. Instance Workflow spouštěné pomocí cronu v plánu Workers Paid mají pro každé spuštění samostatný hodinový limit souběžnosti pro cron. ↩ -
Každá vytvořená nebo restartovaná instance se počítá do tohoto limitu ↩
-
Pokud překročíte limit rychlosti vytváření nových instancí Workflow, Workflows vrátí chybu HTTP 429 rate limited. ↩ ↩2
-
Stav instance a protokoly Workflow se uchovávají po dobu 3 dnů v plánu Workers Free a po dobu 30 dnů v plánu Workers Paid. ↩