celery 常用执行命令

本文详细介绍了Celery的常用执行命令及其参数,包括如何配置工作单元子进程、日志等级、任务队列等。同时,深入解析了Celery的三大核心组件:CeleryWorker(消费者)、Producer(生产者)及CeleryBeat(任务调度器)的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

celery 常用执行命令详解

  • 执行命令
celery -A test-1.celery worker -n name-1 --loglevel=info --max-tasks-per-child 500 --autoscale=4,1 -Q q-1
  • 常用参数
参数说明
-A / --app要使用的应用程序实例
-n / --hostname设置自定义主机名
-Q / --queues指定一个消息队列,该进程只接受此队列的任务
–max-tasks-per-child配置工作单元子进程在被一个新进程取代之前可以执行的最大任务数量
–max-memory-per-child设置工作单元子进程被替换之前可以使用的最大内存
-l / --loglevel定义打印log的等级 DEBUG, INFO, WARNING, ERROR, CRITICAL, FATAL
–autoscale池的进程的最大数量和最小数量
-c / --concurrency同时处理任务的工作进程数量,默认值是系统上可用的cpu数量
-B / --beat定义运行celery打周期任务调度程序
-h / --helphelp!help!help!
  • -n / --hostname 参数变量扩展

    • %h: 主机名,包含域名
    • %n: 主机名
    • %d: 域名
  • 如果当前主机名是 test.ubuntu.com,那么会扩展如下

命令输出值
ttt_%httt_test.ubuntu.com
ttt_%nttt_ubuntu
ttt_%dttt_ubuntu.com

Celery的生产者和消费者

  • Celery Worker: 执行任务的消费者
  • Producer: 任务生产者. 调用 Celery API , 函数或者装饰器, 而产生任务并交给任务队列处理的都是任务生产者
  • Celery Beat: 任务调度器. Beat 进程会读取配置文件的内容, 周期性的将配置中到期需要执行的任务发送给任务队列
### 配置和运行 Windows 上的 Celery 分布式任务队列 #### 准备工作 为了在 Windows 操作系统上成功配置并运行 Celery,需先安装 Python 及其包管理工具 pip。确保已正确设置了 Python 环境变量以便可以在命令提示符中直接调用 python 或 pip。 #### 安装依赖库 通过 pip 来安装 Celery 以及所选的消息代理服务(例如 Redis)。Redis 是一种常用的消息中间件,在此作为例子展示如何安装: ```bash pip install celery redis ``` #### 创建项目结构 创建一个新的文件夹来容纳项目的各个部分,并在此目录内建立必要的脚本文件。通常情况下会有一个 `tasks.py` 文件定义要执行的任务函数;还有一个启动 worker 的入口脚本 `worker.py`[^1]。 #### 编写任务模块 编辑 `tasks.py` 添加如下代码片段以定义简单的测试任务: ```python from celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y ``` 这段代码初始化了一个名为 "tasks" 的 Celery 应用实例,并指定了使用的消息代理 URL (这里假设本地已经启用了默认端口上的 Redis)[^2]。 #### 启动 Celery Worker 编写 `worker.py` 脚本来启动 workers 并监听来自客户端的新任务请求: ```python from tasks import app if __name__ == '__main__': argv = [ 'worker', '--loglevel=INFO' ] app.worker_main(argv) ``` 保存以上更改后打开命令行窗口进入该工程根路径下输入以下指令启动 worker 进程: ```bash python worker.py ``` 此时应该可以看到日志输出表明 worker 正常运作等待接收新任务了。 #### 测试心跳轮询机制 为了让 Celery 在 Windows 下正常发送心跳信号给 Broker 维护连接活跃度,可在 `celeryconfig.py` 中加入特定配置项: ```python broker_heartbeat = 10 # 设置每十秒一次的心跳间隔 result_backend = 'rpc://' # 结果存储后端可选用 RPC 方式 task_serializer = 'json' # 使用 JSON 格式的序列化器提高兼容性 accept_content = ['json'] # 接受的内容类型仅限于 json timezone = 'Asia/Shanghai'# 设定时区为中国标准时间 enable_utc = False # 关闭 UTC 支持转而采用本地时间戳 ``` 完成上述操作之后再次重启 worker 即可使新的设置生效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光不写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值