监听变化

更新时间:
复制 MD 格式

Filesystem 支持监听目录变化。适合在长任务中等待 Agent 输出文件、同步沙箱内程序生成的产物,或把文件变化事件转发给业务侧状态机。

监听目录

TypeScript 示例:

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

// 任务完成后关闭监听。
await watcher.stop();

TypeScript SDK 的 onEventwatchDir() 的第二个位置参数,不是选项对象的字段;recursiveonExit 等可选项通过第三个参数传入。关闭监听使用 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() 做有限次数轮询。