全部產品
Search
文件中心

Function Compute:後台命令

更新時間:Jul 22, 2026

後台命令適合啟動 Web 服務、長時間運行任務或需要分階段讀取輸出的進程。

啟動後台命令

將命令設定為後台運行後,SDK 會立即返回進程對象,後續可以繼續訪問連接埠、串連進程或終止進程。

TypeScript 樣本:

import { Sandbox } from "e2b";

const sandbox = await Sandbox.create("code-interpreter-v1", {
  apiKey: process.env.E2B_API_KEY,
  apiUrl: process.env.E2B_API_URL,
  domain: process.env.E2B_DOMAIN,
});

try {
  const cmd = await sandbox.commands.run("python3 -m http.server 8000", {
    background: true,
    timeoutMs: 10 * 60 * 1000,
  });

  const host = sandbox.getHost(8000);
  console.log(`https://${host}`);

  const running = await sandbox.commands.list();
  console.log(running);

  await cmd.kill();
} finally {
  await sandbox.kill();
}

Python 樣本:

import os

from e2b import Sandbox

sandbox = Sandbox.create(
    "code-interpreter-v1",
    api_key=os.environ["E2B_API_KEY"],
    api_url=os.environ["E2B_API_URL"],
    domain=os.environ["E2B_DOMAIN"],
)

try:
    process = sandbox.commands.run(
        "python3 -m http.server 8000",
        background=True,
        timeout=10 * 60,
    )

    host = sandbox.get_host(8000)
    print(f"https://{host}")

    running = sandbox.commands.list()
    print(running)

    process.kill()
finally:
    sandbox.kill()

串連和停止進程

已知進程 ID 時,可以通過 sandbox.commands.connect() 串連到運行中的進程;需要停止進程時,可以調用進程對象的 kill(),也可以使用 sandbox.commands.kill()。

不同 SDK 版本中進程 ID 欄位和串連參數命名可能不同,建議先通過 sandbox.commands.list() 查看返回結構,再按所用 SDK 的類型定義調用 connect() 或 kill()。如果只是當前調用啟動的後台命令,優先儲存返回的進程對象並調用 process.kill()。

使用建議

  • 啟動服務類進程時,先確認服務監聽連接埠,再通過 sandbox.getHost(port) 擷取訪問地址。

  • 後台進程不會因為 SDK 調用返回而自動結束,但仍受命令執行逾時時間約束。E2B SDK 的命令逾時預設通常為 60 秒;長時間啟動並執行服務或任務應顯式設定合適的逾時時間,例如 TypeScript 使用 timeoutMs,Python 使用 timeout,並在任務完成後主動終止進程或終止 Sandbox。

  • 需要持續讀取輸出的任務,優先使用後台進程和串連進程的方式,不建議用長逾時的同步命令阻塞主流程。

  • 對外提供訪問地址的服務,應在業務側設定鑒權或使用一次性任務 URL,避免暴露敏感介面。