本篇文章将介绍如何为 Python 脚本配置任务队列,实现脚本的物理隔离与性能优化。
Python 2.0 脚本组件基于 Celery 任务队列执行脚本。通过队列配置,可以将不同类型的脚本分配到不同的 Celery Worker 上执行,实现物理隔离和资源隔离。
典型的使用场景:某些 Python 脚本对外提供接口且并发和频率很高,为保证这些脚本的稳定性和性能,需要将其与其他脚本在物理部署上进行隔离。
拥有一个先胜云系统管理员账号,拥有对 Python 组件 2.0 的全部操作权限。
拥有一个先胜云管理员账号,由系统管理员授权拥有对 Python 组件 2.0 的操作权限。
版本要求:队列配置功能从版本 2.1.2.19.0_3.3.23 开始生效。
Python 2.0 脚本支持以下队列类型,通过脚本元素的 defaultQueue 字段进行配置:
|
值 |
类型名称 |
内部标识 |
说明 |
|---|---|---|---|
|
0 |
默认队列(prefork) |
prefork |
系统默认,所有脚本不配置时使用此队列。使用多进程池执行任务 |
|
1 |
多队列(standalone) |
standalone |
用于需要与默认队列物理隔离的脚本。需部署独立 Celery Pod 并配置对应环境变量 |
|
2 |
高并发队列(thread) |
thread |
使用线程池执行任务,适用于 I/O 密集型场景。需部署独立 Celery Pod 并配置对应环境变量 |
注意
defaultQueue 不配置或为 0 时,脚本使用默认队列,由主 Celery Pod 处理。
defaultQueue 为 1 或 2 时,脚本将被路由到对应的独立 Celery Pod 执行。
值 1 和 2 对应不同的 Celery Pod 部署配置,各自需要独立的环境变量。
当脚本的 defaultQueue 不为 0 时,系统会将任务路由到名为 {celery}{value} 的队列。例如:
defaultQueue=1 → 任务进入 {celery}1 队列
defaultQueue=2 → 任务进入 {celery}2 队列
对应的 Celery Pod 需要通过环境变量 CELERY_TASK_DEFAULT_QUEUE 指定自己监听的队列名,才能接收到这些任务。
|
配置项 |
默认队列 Pod |
独立队列 Pod |
|---|---|---|
|
环境变量 |
不配置 |
|
|
监听队列 |
Celery 默认队列 |
|
|
处理的脚本 |
|
|
要将脚本隔离到独立队列,需要部署独立的 Celery Pod,并配置对应的环境变量。
以将脚本路由到多队列(defaultQueue=1)为例:
# 默认队列 Pod(主 Pod)— 无需特殊配置
# CELERY_TASK_DEFAULT_QUEUE 未设置
# 独立队列 Pod — 监听 {celery}1 队列
CELERY_TASK_DEFAULT_QUEUE=1
如果需要使用高并发队列(defaultQueue=2),则配置:
# 独立队列 Pod — 监听 {celery}2 队列
CELERY_TASK_DEFAULT_QUEUE=2
部署完成后,不同 Pod 将各自监听不同的队列,实现脚本执行的物理隔离。
每个独立队列值(1、2)都需要对应一个独立的 Celery Pod。例如同时使用多队列和高并发队列时,需要部署三个 Celery Pod:一个默认队列 Pod、一个多队列 Pod(CELERY_TASK_DEFAULT_QUEUE=1)、一个高并发队列 Pod(CELERY_TASK_DEFAULT_QUEUE=2)。
defaultQueue 字段当前未在前端界面暴露,无法通过页面直接修改。需要通过 API 调用的方式进行配置。
具体操作方式如下:
在浏览器中打开先胜云平台的 元素管理 页面,找到目标 Python 脚本。
打开浏览器开发者工具(F12),切换到 Network 标签页。
在元素管理中对目标脚本执行一次 编辑并保存 操作(可以不做任何修改直接保存)。
在 Network 中找到保存脚本的请求,右键点击该请求,选择 以cURL(bash)格式复制。

将复制的 cURL 命令粘贴到 Postman 或其他 API 工具中。
在请求体(Body)JSON 中找到 defaultQueue 字段,将其修改为所需的值:
"defaultQueue": 0 — 使用默认队列
"defaultQueue": 1 — 使用多队列
"defaultQueue": 2 — 使用高并发队列
发送请求,完成队列配置。
{
"elementName": "my_script",
"content": "...",
"defaultQueue": 1,
"shouldLog": true
}
前端回显效果:

假设有一个对外提供接口的 Python 脚本,具有以下特点:
并发和频率很高
CPU 密集型计算
需要与其他脚本物理隔离以保证稳定性
配置步骤:
运维团队部署第二个 Celery Pod,配置环境变量 CELERY_TASK_DEFAULT_QUEUE=1。
通过 API 将目标脚本的 defaultQueue 设置为 1(参考上述步骤二)。
保存后,该脚本的所有执行任务将被路由到独立 Pod,与默认队列的脚本物理隔离。
版本兼容:队列配置功能从版本 2.1.2.19.0_3.3.23 开始生效。在此之前的版本中,相关配置项仅支持布尔值(true/false),不支持多队列。
部署前置:使用 defaultQueue=1 或 defaultQueue=2 前,必须确保后端已部署对应环境变量的 Celery Pod,否则任务将无法正常执行。
API 配置:defaultQueue 字段未在前端界面暴露,只能通过 API 方式修改。
默认行为:未配置 defaultQueue 或值为 0 的脚本,将始终由默认队列的 Celery Pod 处理。
多队列与高并发的区别:defaultQueue=1(standalone)使用独立进程池,defaultQueue=2(thread)使用线程池。两者对应不同的 Celery Pod 部署,不能混用。
回到顶部
咨询热线
