最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
celery是什么 一文带你搞懂任务队列和worker原理 Django环境
时间:2026-07-22 09:14:02 编辑:袖梨 来源:一聚教程网
一、 简介
Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,它是一个专注于实时处理的任务队列,同时也支持任务调度。
中文官网:
celery中文官网
安装
pip install celery #查看是否存在 pip freeze|grep -i 'celery'
二 名词解释
- broker—消息传输的中间件,生产者一旦有消息发送,将发至broker【RQ,Redis】
- backend-用于存储消息/任务结果,如果需要跟踪和查询任务状态,则需添加要配置相关。
- worker-工作者-消费/执行broker中消息/任务的进程。
三、使用celery
from celery import Celery
app = Celery('kqlproject',broker='redis://:[email protected]:6379/1')
#app = Celery('dadablog',broker='redis://:@127.0.0.1:6379/1')
#第一个参数为自定义名字,
#创建任务函数
@app.task
def task_test():
print("task is running")
四、启动worker
ubuntu 终端中,task.py文件同级目录下执行下面命令:
#此模式默认为前台启动,终端中会输出相关日志。 celery -A tasks worker --loglevel=info
五、创建生产者-推送任务
在tasks.py 文件的同级目录下进入ipython3 执行如下代码:
from tasks import task_test task_test.delay() 执行完毕后,观察worker的日志。
六、存储执行结果-worker
Celery提供存储任务执行结果的方案,需借助redis或mysql或Memcached等。
from celery import Celery
app = Celery(
'demo',
broker='redis://@127.0.0.1:6379/1',
backend='redis://@127.0.0.1:6379/2',
)
#创建任务函数
@app.task
def test_tak(a,b):
print("task is runing")
return a+b
七、Django中使用celery
1.创建celery配置文件
项目同名目录下创建celery.py
2.应用下创建task.py集中定义对应的work函数。
3.视图函数充当生产者,推送具体worker函数。
4.项目目录下启动worker
celery -A 项目同名目录名 worker -l info
在settings同级目录下新建celery.py,代码如下:
# @Author : Kql
# @Time : 2023/6/19 18:50
from celery import Celery
from django.conf import settings
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dadablog.settings')
app = Celery('dadablog')
app.conf.update(
BROKER_URL='redis://:@127.0.0.1:6379/1'
)
# 自动去注册应用下寻找加载worker函数
app.autodiscover_tasks(settings.INSTALLED_APPS)
在每个应用下分别创建执行任务的函数:
# @Author : Kql
# @Time : 2023/6/19 18:57
# 发送短信
from tools.sms import YunTongXin
from dadablog.celery import app
@app.task
def send_sms_c(phone, code):
config = {
"accountSid": "2c94811c***********",
"accountToken": "bd81141c************8",
"appId": "2c94811c88b*****************",
"templateId": "1"
}
yun = YunTongXin(**config)
res = yun.run(phone, code)
return res
如下:红色方框内显示内容为任务正常执行的输出。

八、正式环境后台启动
nohub celery -A projetname worker -P gevent -c 1000 > celery.log 2>&1 & #1. nohub 忽略所有挂断信号(sighup) #2. projectname 项目配置目录 #3. -P 使用python协程进行任务的开启,开启1000个协程 #4. celery.log 在当前目录下生成日志文件,也可以使用绝对路径。 #5. 标准输入输入是文件描述符0,它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。 #6. 标准输出输出是文件描述符1,它是命令的输出,缺省是屏幕,也可以是文件。 #7. 标准错误输入是文件描述符2,这是命令错误的输出,缺省是屏幕,也可以是文件。 #8. &符号:代表将命令在后台启动。 #9. 2>&1 将错误输出重定向给标准输出,中间加&f符号。
九、总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
您可能感兴趣的文章:- django项目如何用celery实现异步任务?完整步骤分享
- Django Celery Redis异步发邮件怎么做?完整配置教程分享
- Celery定时任务组件之Django+Celery项目实战教程
- django+celery如何实现定时拉取阿里云rocketmq实例信息
- django celery定时任务实战详解
- Celery+django+redis异步执行任务的实现示例
相关文章
- 蛙漫2waman2官方正版下载_漫蛙ManWa最新网址2026最新网址实测能用 07-22
- 抖音电脑网页版入口-抖音电脑网页版怎么进入? 07-22
- 采用 JavaScript 实现有限状态机的经典问题 07-22
- 漫画哔咔哔咔入口链接官网-哔咔哔咔漫画入口正版链接 07-22
- 啵乐漫画app官方下载-啵乐漫画正版安装包下载 07-22
- 潜水员戴夫环顾冰河区域任务攻略 07-22