全部產品
Search
文件中心

Function Compute:監聽變化

更新時間:Oct 31, 2026

Filesystem 支援監聽目錄變化。適合在長任務中等待 Agent 輸出檔案、同步沙箱內程式產生的產物,或把檔案變化事件轉寄給業務側狀態機器。

監聽目錄

TypeScript 樣本:

const watcher = await sandbox.files.watchDir("/tmp/output", (event) => {
  console.log(event);
});

// 任務完成後關閉監聽。
await watcher.stop();

TypeScript SDK 的 onEvent 是 watchDir() 的第二個位置參數,不是選項對象的欄位;recursive、onExit 等可選項通過第三個參數傳入。關閉監聽使用 watcher.stop()。

Python 樣本:

Python SDK 使用 watch_dir(),回調通過位置參數 on_event 傳入。由於回調版 watch_dir 僅在非同步 API 中提供,樣本使用 AsyncSandbox:

import asyncio
from e2b_code_interpreter import AsyncSandbox


async def main():
    sandbox = await AsyncSandbox.create("code-interpreter-v1")

    handle = await sandbox.files.watch_dir(
        "/tmp/output",
        on_event=lambda event: print(event),
    )

    # 任務完成後關閉監聽。
    await handle.stop()


asyncio.run(main())

生產接入前建議先用最小樣本確認事件結構、關閉方式和異常返回。

使用建議

  • 監聽前先確保目錄存在,可以用 sandbox.files.makeDir() 建立輸出目錄。

  • 回調可能收到多次事件,業務側應按檔案路徑、事件類型和任務 ID 做去重。

  • 監聽適合改善即時性,但任務最終狀態仍應以命令退出碼、業務狀態檔案或外部任務狀態為準。

  • 長時間監聽應設定業務逾時,並在任務完成、失敗或逾時後主動關閉 watcher。

  • 如果只需要等待單個檔案出現,也可以繼續使用 sandbox.files.exists() 做有限次數輪詢。