模块八:n8n 进阶功能拓展
社区节点、数据库等高阶玩法,拓展 n8n 能力边界。
8.1 异步轮询机制设计
- 讲解如何利用 IF 节点和 Wait 节点设计简单的 API 请求重试逻辑(例如,如果 HTTP 请求失败,则等待 5 秒后重试一次)。
- 在对接 AI 生图或视频处理 API 时,通常涉及两个步骤:第一步是提交任务,第二步是获取结果。因为生成需要时间,我们不能一直挂着连接等,而是需要设计一套“轮询(Polling)”机制。
- 核心逻辑:提交任务 -> 等待 -> 查询状态 -> 判断是否完成 -> (没完成) -> 回到等待。
🔧 实操步骤(以 Nano Banana 生图为例):
第一步:发起任务 (Task Creation)
- 节点:Nano Banana 生图 (HTTP Request - POST)
- 作用:向 API 发送生图指令。
- 关键点:这个节点不会直接返回图片,而是返回一个 Task ID(任务 ID)。我们需要保留这个 ID,用于后续查询。
第二步:构建轮询闭环 (The Loop)
- 设置缓冲:等待 10 秒 (Wait 节点)
- 作用:给服务器一点处理时间。如果不加等待直接疯狂查询,不仅会被 API 封禁,还会导致 n8n 服务器资源空转。
- 设置:“Wait Amount” 设置为 10 秒(根据 API 建议调整)。
- 查询状态:异步轮询 (HTTP Request - GET)
- 作用:拿着第一步获得的 Task ID,去询问服务器:“我的图做好了吗?”
- 配置:URL 通常是
.../task/{task_id}。
- 判断分流:If (Switch/If 节点)
- 作用:查看上一步查询回来的 status(状态)字段。
- 条件设置:
- String (Value 1):
{{ $json.status }} - Operator:Equal
- Value 2:succeeded(或者 completed,视 API 文档而定)。
- String (Value 1):
- 连线逻辑(关键!):
- True (完成):连向后续节点(如下载图片、发通知)。
- False (未完成):拉一条线,倒回去连在 等待 10 秒 节点的输入口。
8.2 批量梳理数据及性能优化
- 讲解 Split in Batches 的进阶用法,以及如何设计子工作流 (Execute Workflow 节点) 来处理复杂、可复用的逻辑,避免单个工作流过于臃肿。
8.2.1 Loop Over Items(Split in Batches)
Loop Over Items 是处理大批量数据的神器。它的作用是将一大坨数据切成“小块(Batch)”,分批喂给后续节点。
- 为什么要用它?
- 规避 API 限制:很多 API 限制每分钟的请求次数(比如每分钟 10 次),或者一次只能接收一定量的数据。
- 内存保护:避免一次性加载过多数据导致服务器崩溃。
- 核心配置:
- Batch Size(批次大小):比如设置为 10。意味着如果有 100 条数据,循环会执行 10 次,每次执行 10 条数据。
- 工作流向:
- Loop 端口:输出当前批次的数据(处理逻辑接在这里)。
- Done 端口:当所有批次都处理完后,从这里输出(通常接结束通知)。
- 闭环:处理完当前批次的逻辑后,必须把连线连回到 Loop Over Items 节点的输入侧(通常是它的左侧或自身),告诉它:“这一批处理完了,给我下一批。”
8.2.2 子工作流(Sub-workflow Trigger)
这个节点是“工作流”的专属起点,意思是“我是一个可以被调用的模块,我准备好接收来自上级工作流的参数了”。
- 添加触发器:首先,在 n8n 画布空白处点击 “+”,在右侧添加节点处搜索 “sub”,找到 Execute Sub-workflow 并添加。
- 确认触发器:接着点击进去,找到这个触发器,点击添加。
- 调用与参数传递:子工作流必须使用这个触发节点作为开始,以接收上级工作流的参数。上级工作流则通过 Execute A Sub workflow 调用子工作流,通过这样的方法能够极大丰富我们的工作流使用场景。
8.3 社区节点 (Community Nodes) 的安装与使用
- n8n 官方节点虽然多,但无法覆盖全世界所有的 SaaS。社区节点是 n8n 生态的宝藏。
- 发现、安装和使用社区开发的节点,例如功能更强大的 Puppeteer 节点(用于复杂网页抓取)、Vector DB 节点(用于 AI 知识库)等,是 n8n 生态强壮性的来源。
- 发现节点:
- 访问:n8n 官方 npm 列表。
- 案例:Puppeteer 节点 (n8n-nodes-puppeteer) —— 控制无头浏览器,处理需要 JS 渲染的动态网页。
- 安装方法(自托管版本):
- Settings (设置):左下角 Settings -> Community Nodes。
- Install:点击 Install。
- 输入:npm 包名(例如 n8n-nodes-puppeteer)。
- 重启:安装完成后,需重启 n8n 服务。
- 使用:回到画布,搜索节点名称即可使用。
- 注 1:社区节点由第三方维护,更新速度可能不如官方。在生产环境使用前,务必充分测试。
- 注 2:目前官网使用的 n8n 暂时无法使用社区节点。