「n8n 2.x + Task Runners + 原生 Python」自托管完整部署示例

下面给你一套可直接照抄、可跑通的「n8n 2.x + Task Runners + 原生 Python」自托管完整部署示例
这是目前唯一官方认可的、真正“在 Code 节点里直接写 Python”的方式

我会按 原理 → 部署 → 验证 → 常见坑 的顺序来,避免你踩雷。


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

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 → 完全独立服务

Read more

Python金融数据获取终极指南:告别繁琐,5分钟掌握专业级数据源

Python金融数据获取终极指南:告别繁琐,5分钟掌握专业级数据源 【免费下载链接】mootdx通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 还在为金融数据获取而苦恼吗?面对复杂的行情接口、繁琐的数据格式转换,很多数据分析师和量化交易爱好者都感到力不从心。今天,我将为你揭秘一个强大的Python工具——mootdx,它能让你轻松获取通达信金融数据,为你的投资分析提供坚实的数据支撑。 🎯 你的数据获取痛点,我们懂! 数据获取的三大难题: * 接口复杂难上手:传统行情接口学习成本高,文档晦涩 * 数据格式不统一:不同来源的数据格式各异,转换工作繁琐 * 更新维护成本高:数据源不稳定,需要频繁调整和维护 mootdx正是为解决这些痛点而生,它提供了: * 📊 一站式数据解决方案:从历史数据到实时行情,全面覆盖 * 🔄 智能连接优化:自动选择最佳服务器,确保数据稳定获取 * 💡 开发体验升级:简洁的API设计,让数据获取变得简单高效 🚀 快速上手:5分钟开启数据

By Ne0inhk
Python Anaconda 换源: 设置清华源

Python Anaconda 换源: 设置清华源

为 Anaconda 设置清华源可以极大地提升软件包下载和更新的速度。以下是详细的步骤,分为两个主要部分:为 conda 本身设置频道镜像和为 pip 设置索引镜像。 方法一:通过命令行快速设置(推荐) 这是最快捷的方法,通过执行几条命令即可完成。 1. 打开终端(Windows 用 Anaconda Prompt, Mac/Linux 用 Terminal)。 验证配置: 执行以下命令查看当前的配置,确认 channels 里已经都是清华源的地址。 conda config --show channels (可选但推荐)移除默认的官方频道: 为了避免 conda 在官方源和清华源之间来回切换,可以移除默认的 defaults 频道。 conda config --remove channels defaults 设置搜索时显示频道地址: conda config

By Ne0inhk

Python 进阶爬虫:解析知识星球 API

一、知识星球 API 核心原理与接口分析 知识星球的前端页面采用动态加载技术(JavaScript 渲染),所有内容数据均通过后端 API 接口以 JSON 格式返回,前端再将数据渲染为可视化页面。因此,API 爬虫的核心逻辑是模拟前端请求,直接调用 API 接口获取原始 JSON 数据,而非解析 HTML 页面。 1.1 API 接口基础架构 知识星球的 API 接口遵循 RESTful 设计规范,核心请求域名为<font>https://api.zsxq.com</font>,所有接口均通过 HTTPS 协议传输,确保数据安全性。接口主要分为三大类: * 认证类接口:

By Ne0inhk
Python核心:Django鉴权方案全解析

Python核心:Django鉴权方案全解析

让我们一起走向未来 🎓作者简介:全栈领域优质创作者 🌐个人主页:百锦再@新空间代码工作室 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15045666310 🌐网站:https://meihua150.cn/ 💡座右铭:坚持自己的坚持,不要迷失自己!要快乐 目录 * 让我们一起走向未来 * 1. Django认证系统概述 * 2. 用户身份验证(Authentication) * 用户模型 * 用户登录验证 * 用户注销 * 3. 用户权限控制(Authorization) * 权限 * 用户组 * 权限检查 * 装饰器:`@login_required` 和 `@permission_required` * 4. 自定义认证系统 * 自定义用户模型 * 基于Token的认证(例如JWT)

By Ne0inhk