全部文档
文档中心Python 2.0 脚本操作配置 Python 脚本队列

配置 Python 脚本队列


本篇文章将介绍如何为 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 处理。

  • defaultQueue12 时,脚本将被路由到对应的独立 Celery Pod 执行。

  • 12 对应不同的 Celery Pod 部署配置,各自需要独立的环境变量。

当脚本的 defaultQueue 不为 0 时,系统会将任务路由到名为 {celery}{value} 的队列。例如:

  • defaultQueue=1 → 任务进入 {celery}1 队列

  • defaultQueue=2 → 任务进入 {celery}2 队列

对应的 Celery Pod 需要通过环境变量 CELERY_TASK_DEFAULT_QUEUE 指定自己监听的队列名,才能接收到这些任务。

配置项

默认队列 Pod

独立队列 Pod

环境变量

不配置 CELERY_TASK_DEFAULT_QUEUE

CELERY_TASK_DEFAULT_QUEUE = 队列值(如 1 或 2)

监听队列

Celery 默认队列

{celery}{value}(如 {celery}1

处理的脚本

defaultQueue=0 或未配置的脚本

defaultQueue 与环境变量值匹配的脚本

要将脚本隔离到独立队列,需要部署独立的 Celery Pod,并配置对应的环境变量。

以将脚本路由到多队列(defaultQueue=1)为例:

Copy
# 默认队列 Pod(主 Pod)— 无需特殊配置
# CELERY_TASK_DEFAULT_QUEUE 未设置

# 独立队列 Pod — 监听 {celery}1 队列
CELERY_TASK_DEFAULT_QUEUE=1

如果需要使用高并发队列(defaultQueue=2),则配置:

Copy
# 独立队列 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 调用的方式进行配置。

具体操作方式如下:

  1. 在浏览器中打开先胜云平台的 元素管理 页面,找到目标 Python 脚本。

  2. 打开浏览器开发者工具(F12),切换到 Network 标签页。

  3. 在元素管理中对目标脚本执行一次 编辑并保存 操作(可以不做任何修改直接保存)。

  4. 在 Network 中找到保存脚本的请求,右键点击该请求,选择 以cURL(bash)格式复制

  1. 将复制的 cURL 命令粘贴到 Postman 或其他 API 工具中。

  2. 在请求体(Body)JSON 中找到 defaultQueue 字段,将其修改为所需的值:

    • "defaultQueue": 0 — 使用默认队列

    • "defaultQueue": 1 — 使用多队列

    • "defaultQueue": 2 — 使用高并发队列

  3. 发送请求,完成队列配置。

Copy
{
  "elementName": "my_script",
  "content": "...",
  "defaultQueue": 1,
  "shouldLog": true
}

前端回显效果:

假设有一个对外提供接口的 Python 脚本,具有以下特点:

  • 并发和频率很高

  • CPU 密集型计算

  • 需要与其他脚本物理隔离以保证稳定性

配置步骤

  1. 运维团队部署第二个 Celery Pod,配置环境变量 CELERY_TASK_DEFAULT_QUEUE=1

  2. 通过 API 将目标脚本的 defaultQueue 设置为 1(参考上述步骤二)。

  3. 保存后,该脚本的所有执行任务将被路由到独立 Pod,与默认队列的脚本物理隔离。

  • 版本兼容:队列配置功能从版本 2.1.2.19.0_3.3.23 开始生效。在此之前的版本中,相关配置项仅支持布尔值(true/false),不支持多队列。

  • 部署前置:使用 defaultQueue=1defaultQueue=2 前,必须确保后端已部署对应环境变量的 Celery Pod,否则任务将无法正常执行。

  • API 配置defaultQueue 字段未在前端界面暴露,只能通过 API 方式修改。

  • 默认行为:未配置 defaultQueue 或值为 0 的脚本,将始终由默认队列的 Celery Pod 处理。

  • 多队列与高并发的区别defaultQueue=1(standalone)使用独立进程池,defaultQueue=2(thread)使用线程池。两者对应不同的 Celery Pod 部署,不能混用。

回到顶部

咨询热线

400-821-9199