celer守护进程 celery 后台运行beat worker 定时任务

本文详细介绍了在CentOS 6.9环境下,如何使用Celery 3.1.23进行定时任务配置,并展示了如何在Django项目中后台启动和停止Celery Worker及Beat的方法。通过脚本文件实现Celery的后台运行,包括启动、停止Worker和Beat的全过程。

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

#0 GitHub

https://github.com/Coxhuang/celery

#1 环境

centos 6.9 
django==2.0.7
celery==3.1.23
django-celery==3.2.2

#2 celery使用(定时任务)

???celery4 定时任务配置使用(传送门)
???celery4 异步任务配置使用(传送门)

#3 后台启动worker / beat

#3.1 后台运行Worker

cd 项目根目录
celery multi start w1 -A  celery_pro -l info  # 开始
celery multi stop w1 -A  celery_pro -l info # 结束

设置成脚本文件

vim /opt/celery_worker.sh
#!/bin/sh 
case $1 in                                        
   start) cd /opt/django-celery/ && celery multi start w1 -A  celery_pro -l info;;  # django项目根目录 : /opt/django-celery/
   stop) cd /opt/django-celery/ && celery multi stop w1 -A  celery_pro -l info;; # django项目根目录 : /opt/django-celery/
   *) echo "require start|stop" ;;     
esac

使用

sh celery_worker.sh start # 开启
sh celery_worker.sh stop # 关闭

#3.3 后台运行 beat

没有找到官方提供的beat后台运行命令,所以,自己写

  • 后台启动beat

新增脚本 vim /opt/celery_beat.sh

vim /opt/celery_beat.sh
#!/bin/sh
case $1 in  
   start) cd /opt/django-celery/ && celery -A celery_pro beat -l info >  out.file  2>&1  & ;; # 启动beat ; django项目根目录 : /opt/django-celery/
esac 
  • 关闭beat

新增脚本 vim /opt/beat_stop.sh

vim /opt/beat_stop.sh
#!/bin/sh               
PROCESS=`ps -ef|grep celery|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS         
do
  echo "Kill the $1 process [ $i ]"  
  kill -9 $i        
done 

编辑脚本 vim /opt/celery_beat.sh

vim /opt/celery_beat.sh
#!/bin/sh
case $1 in  
   start) cd /opt/django-celery/ && celery -A celery_pro beat -l info >  out.file  2>&1  & ;; # 启动beat  ; django项目根目录 : /opt/django-celery/
   stop) su root /opt/beat_stop.sh start ;; # 关闭beat(根据beat_stop.sh脚本的路径适当变化)
   *) echo "require start|stop" ;;
esac 

在这里插入图片描述

#6.3 使用小结

  • 后台启动worker, sh celery_worker.sh start
  • 后台关闭worker, sh celery_worker.sh stop
  • 后台启动beat, sh celery_beat.sh start
  • 后台关闭beat, sh celery_beat.sh stop

#6.4 测试

在这里插入图片描述

在这里插入图片描述

### 如何在 Docker 中安装和配置 Celery 要在 Docker 环境中成功安装和配置 Celery,可以按照以下方式操作: #### 1. 准备基础环境 确保本地已安装 Docker 和 Docker Compose 工具。可以通过以下命令验证其是否存在以及版本号是否满足需求: ```bash docker --version docker-compose --version ``` 如果尚未安装这些工具,则需先完成它们的安装过程。 --- #### 2. 创建 `docker-compose.yml` 配置文件 以下是基于 Django 的典型 `docker-compose.yml` 文件结构示例,其中包含了 Redis(作为消息代理)、Django Web 应用程序、Celery WorkerBeat 定时任务调度器的服务定义[^2]: ```yaml version: '3.8' services: redis: image: redis:alpine container_name: redis restart: always django: build: . command: python manage.py runserver 0.0.0.0:8000 ports: - "8000:8000" volumes: - .:/app/ depends_on: - redis celery_worker: build: . command: celery -A your_project_name worker --loglevel=info volumes: - .:/app/ depends_on: - redis celery_beat: build: . command: celery -A your_project_name beat --loglevel=info volumes: - .:/app/ depends_on: - redis ``` 注意替换 `your_project_name` 成实际项目的名称。 --- #### 3. 修改 Django 项目中的设置 为了使 Celery 能够正常工作,在 Django 项目的 settings.py 文件里增加如下配置项[^5]: ```python CELERY_BROKER_URL = 'redis://redis:6379' CELERY_RESULT_BACKEND = 'redis://redis:6379' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = 'UTC' ``` 同时记得把 `'django_celery_results'`, `'django_celer_beat'` 添加至 INSTALLED_APPS 列表内,并执行数据库迁移指令来初始化必要的表格数据存储位置。 --- #### 4. 构建镜像并启动服务 进入包含 `docker-compose.yml` 文件所在的路径下运行下面两条命令依次构建所需镜像和服务实例化^[^1]^: ```bash docker-compose build docker-compose up ``` 此时应该可以看到各个组件按预期顺序被加载起来并且相互之间建立连接关系。 --- #### 5. 手动触发后台作业队列(可选步骤) 对于某些特殊场景下的即时测试目的而言,也可以通过单独调用脚本来激活特定的任务处理器单元。比如预先编写好的 shell script 来简化重复性的动作序列处理逻辑[^4]: ```bash #!/bin/bash celery -A RemoteCut worker -l info -P eventlet ``` 随后利用 docker exec 功能将其注入目标容器内部加以执行即可达成快速响应的目的。 --- ### 总结说明 综上所述,我们介绍了从零开始搭建一套完整的支持异步任务分发机制的基础框架体系架构设计方案;涵盖了主要组成部分之间的协作原理概述及其具体实现细节描述等内容要点分析探讨环节部分结束之后还给出了几个常见疑问解答方向提示供参考学习交流使用价值较高值得深入研究探索实践应用领域广泛前景光明未来无限可能等待发掘创造奇迹时刻来临之际让我们共同期待吧!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值