跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonNode.jsSaaSAI

n8n 2.x 自托管部署:Task Runners 原生 Python 支持

介绍 n8n 2.x 版本通过 Task Runners 实现原生 Python 代码执行的自托管部署方案。涵盖架构原理、Docker Compose 配置、Code 节点使用验证、第三方库扩展及常见问题排查。旨在帮助用户在不污染主容器的情况下安全运行 Python 脚本,适用于轻数据处理及逻辑判断场景。

Pythonist发布于 2026/3/27更新于 2026/10/22122 浏览

一、先明确一件事(非常关键)

在 n8n 2.x 中:

Python Code Node ≠ 主 n8n 容器执行 Python Code Node = Task Runner 容器执行

也就是说:

  • n8n 主服务:不跑 Python
  • Python:只在 Task Runner 里跑
  • 两者通过 内部 RPC 通信

二、整体架构(你部署后会是这样)

┌──────────────┐ │ n8n main │ (UI / Workflow / Orchestration) │ │ │ Code Node │ └──────┬───────┘ │ Task execution ┌──────▼──────────────────┐ │ n8n Task Runner │ │ (Python / JS sandbox) │ │ │ │ ✔ Python 3.x │ │ ✔ 执行 Code Node(Python)│ └──────────────────────────┘ 

三、完整 Docker Compose(可直接用)

1️⃣ 目录结构建议
n8n/
 ├─ docker-compose.yml
 ├─ .env
2️⃣ .env 文件
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin123
N8N_ENCRYPTION_KEY=change_this_to_random_string
DB_TYPE=sqlite

(你可以后面再换 Postgres)

3️⃣ docker-compose.yml(重点)
version: "3.9"
services:
  n8n:
    image: n8nio/n8n:2
    container_name: n8n
    restart: always
    ports:
      - "5678:5678"
    
       
    
      
       
      
       
      
       
       
      
       
    
       
    
       
  
     
     
     
    
       
       
    
       

  
  
env_file:
-
.env
environment:
# 开启 task runners
-
N8N_RUNNERS_ENABLED=true
# 使用 external 模式(必须)
-
N8N_RUNNERS_MODE=external
# runner 通信
-
N8N_RUNNERS_AUTH_TOKEN=super-secret-token
-
N8N_RUNNERS_TIMEOUT=300
# 基本设置
-
GENERIC_TIMEZONE=Asia/Shanghai
volumes:
-
n8n_data:/home/node/.n8n
depends_on:
-
n8n-runner
n8n-runner:
image:
n8nio/runners:latest
container_name:
n8n-runner
restart:
always
environment:
-
N8N_RUNNERS_AUTH_TOKEN=super-secret-token
-
N8N_RUNNERS_GRACEFUL_SHUTDOWN_TIMEOUT=30
volumes:
-
runner_data:/data
volumes:
n8n_data:
runner_data:

⚠️ token 必须一致,否则 Code Node 无法执行

4️⃣ 启动
docker compose up -d

浏览器访问:

http://localhost:5678

四、在 Code Node 中使用 Python(验证)

1️⃣ 新建 Workflow → 添加 Code 节点
2️⃣ Language 选择:

👉 Python (Native) (如果你看不到 Python,说明 Runner 没连上)

3️⃣ 示例 Python 代码(100% 可跑)
items = []
for item in _items:
    value = item["json"].get("value", 0)
    items.append({
        "json": {
            "original": value,
            "result": value * 2
        }
    })
return items
4️⃣ 输入示例(Set Node)
{
  "value": 10
}
5️⃣ 输出结果
{
  "original": 10,
  "result": 20
}

✔️ 这是原生 Python,不是 Pyodide,不是 CLI

五、Python Code Node 的重要规则(必须知道)

1️⃣ 可用变量
名称含义
_items输入 items
item["json"]JSON 数据
return items输出

❌ 不支持 $json.xxx
❌ 不支持 JS 写法

2️⃣ Python 标准库
  • 支持大多数 标准库
  • ❌ 默认 不带第三方库(pandas / numpy)

六、如何支持第三方 Python 库(进阶)

方式:自定义 Runner 镜像(官方推荐)
1️⃣ Dockerfile
FROM n8nio/runners:latest
RUN pip install pandas numpy
2️⃣ 构建
docker build -t n8n-runner-python:latest .
3️⃣ compose 中替换
n8n-runner:
  image: n8n-runner-python:latest

七、常见问题(90% 卡在这里)

❌ 看不到 Python 选项
  • Runner 没启动
  • Token 不一致
  • N8N_RUNNERS_MODE 不是 external
❌ 报 No runner available
  • runner 容器未连上
  • 防火墙 / 网络问题
❌ pandas / numpy import error
  • runner 镜像没装库
  • 不支持运行时 pip install

八、你现在到底'能做到什么程度'

你现在已经可以:

  • ✅ 在 Code Node 直接写 Python
  • ✅ 不用 HTTP
  • ✅ 不用 Execute Command
  • ✅ 不污染 n8n 主容器
  • ✅ 官方支持、可升级

但仍要注意:

  • ❌ 不适合长时间任务
  • ❌ 不适合重 ML / GPU
  • ❌ Runner 是'受控执行环境'

九、给你的真实建议(结合你的使用深度)

  • 轻数据处理 / Schema / 逻辑判断 → Python Code Node ✅
  • pandas / AI / 批处理 → Python Service + HTTP
  • 大规模 AI / 向量 / GPU → 完全独立服务

目录

  1. 一、先明确一件事(非常关键)
  2. 二、整体架构(你部署后会是这样)
  3. 三、完整 Docker Compose(可直接用)
  4. 1️⃣ 目录结构建议
  5. 2️⃣ .env 文件
  6. 3️⃣ docker-compose.yml(重点)
  7. 4️⃣ 启动
  8. 四、在 Code Node 中使用 Python(验证)
  9. 1️⃣ 新建 Workflow → 添加 Code 节点
  10. 2️⃣ Language 选择:
  11. 3️⃣ 示例 Python 代码(100% 可跑)
  12. 4️⃣ 输入示例(Set Node)
  13. 5️⃣ 输出结果
  14. 五、Python Code Node 的重要规则(必须知道)
  15. 1️⃣ 可用变量
  16. 2️⃣ Python 标准库
  17. 六、如何支持第三方 Python 库(进阶)
  18. 方式:自定义 Runner 镜像(官方推荐)
  19. 1️⃣ Dockerfile
  20. 2️⃣ 构建
  21. 3️⃣ compose 中替换
  22. 七、常见问题(90% 卡在这里)
  23. ❌ 看不到 Python 选项
  24. ❌ 报 No runner available
  25. ❌ pandas / numpy import error
  26. 八、你现在到底“能做到什么程度”
  27. 九、给你的真实建议(结合你的使用深度)

更多推荐文章

查看全部
  • C++ 高阶数据结构:平衡二叉树(AVLTree)
  • Git 原理与使用深入剖析(上)
  • 利用腾讯云 HAI 与 DeepSeek 快速构建个人网页
  • C++ 泛型编程与模板技术详解
  • RAG 检索增强生成技术原理、优势及应用场景详解
  • C++ 异常处理机制:从基础到实践的全面解析
  • 配置钉钉 OpenClaw 机器人调用 OpenMetadata
  • Android 端 Termux 部署 OpenClaw 打造移动端 AI 助理
  • C++17 PMR 内存管理详解:memory_resource 与 polymorphic_allocator
  • WebView 冷启动并发初始化竞争风险分析
  • VS Code Copilot 实战指南:从安装到 Agent 模式
  • React Native 核心价值与移动端开发趋势分析
  • PythonOCC 基础教程:几何建模与数据交换
  • 使用 llamafile 一键运行本地大模型指南
  • AI 大模型算法工程师求职指南与高薪职位攻略
  • 人工智能前沿动态:哈佛 AI 课程、微软证书及行业新规
  • Spring Boot 数据仓库与 ETL 工具集成实战
  • MacOS 平台 Whisper-WebUI 崩溃问题实战解决方案
  • GLM-5 大模型代码生成能力深度评测与实战
  • 前端实现 Document Picture-in-Picture API 主窗口与小窗视频同步控制

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online