INTEGRITY Dokumentace

Životní cyklus sandboxu

Vaše aplikace adresuje sandbox pomocí ID sandboxu. Linuxové prostředí, které spouští příkazy a uchovává lokální soubory, je kontejner. ID může existovat déle než kterýkoli jednotlivý container.

Tento rozdíl je důležitý pro procesy, terminály, soubory a obnovu po zastavení kvůli nečinnosti nebo po nahrazení.

ID sandboxu a kontejner

Většina aplikací používá jeden sandbox na uživatele nebo úlohu:

const sandbox = getSandbox(env.Sandbox, "user-123");
const sandbox = getSandbox(env.Sandbox, "user-123");
Význam
ID sandboxu Řetězec, který předáte do getSandbox (například "user-123"). Pro pozdější přístup ke stejnému sandboxu použijte stejné ID.
Durable Object Koordinátor stojící za tímto ID. Stejné ID se vždy mapuje na stejnou identitu Durable Object.
Kontejner Aktuální Containers instance, která pro sandbox spouští úlohy Linuxu.
Proces nebo terminál Program nebo interaktivní PTY uvnitř aktuální kontejner.
Místní soubory Soubory na disku daného kontejneru (například v adresáři /workspace).

Stejné ID sandboxu neznamená stejný kontejner. Poté, co se kontejner zastaví nebo je nahrazen, může další práce pro dané ID běžet v novém kontejneru.

Když se kontejner spustí

getSandbox() se vrátí okamžitě. Sama o sobě kontejner nespustí.

Kontejner se spustí, jakmile ho nějaká operace potřebuje, například exec(), createTerminal(), nebo zápis souboru. První spuštění po nasazení nebo po nečinnosti může trvat déle než volání za tepla. Pokud kontejner ještě není připraven, SDK může vyvolat ContainerUnavailableError. Tato chyba znamená, že operace uvnitř containeru nezačala. Viz Chyby a zotavení.

Dokud kontejner běží

Dokud je pro dané sandbox ID spuštěný kontejner:

Podrobnosti procesu: Jak dlouho proces žije. Terminály: Terminály.

Když se kontejner zastaví nebo je nahrazen

Kontejner není trvalý. Cloudflare jej může zastavit po době nečinnosti. Zastavit se může také po chybách, nebo když jej platforma nahradí během běžného provozu (například po některých nasazeních).

Když se to stane:

Chcete-li v práci pokračovat později, uložte si úloha (co spustit, cwd, env, a libovolný checkpoint aplikace), nejen ID procesu nebo terminálu.

Zastavení při nečinnosti, nahrazení a zničení

Událost Co zůstává Co bylo odstraněno
Zastavení při nečinnosti ID sandboxu a identita Durable Object Procesy, terminály a lokální soubory ze zastaveného kontejneru
Nahradit (selhání, nasazení nebo jiná náhrada) ID sandboxu a identita Durable Object Stejné jako zastavení při nečinnosti u předchozího kontejneru
destroy() Řetězec ID sandboxu lze později znovu použít Předchozí práci pro danou generaci považujte za dokončenou

Po zastavení kvůli nečinnosti nebo výměně může další skutečná práce spustit nový kontejner pro stejné sandbox ID. Staré handly procesů a terminálů jsou neplatné. Postupy obnovy: Chyby a zotavení.

keepAlive a sleepAfter mění chování při nečinnosti. Nedrží jednu instanci kontejneru navždy v běhu. Podrobnosti o stabilním API životního cyklu a Možnosti sandboxu (ignoruje možnosti transport a default-session na @next).

Stav, který přežije kontejner

Pouze to, co vaše aplikace uchovává (nebo obnovuje), přežije nový kontejner:

Potřeba Co musí existovat mimo kontejner
Najděte sandbox znovu ID sandboxu
Pokračování v práci při pozdějším požadavku ID prostředku zatímco aktuální kontejner ho stále má, plus dostatek kontextu úlohy pro nové spuštění, pokud ho nemá
Přetrvání po zastavení nebo nahrazení úloha: příkaz nebo nastavení terminálu, cwd, env, checkpoint
Zachovejte soubory po vytvoření nového kontejneru Metadata zálohy, konfigurace připojení nebo jiné trvalé úložiště