小谈Celery技术

Celery参考文档:http://docs.celeryproject.org/en/latest/index.html#

Celery介绍

Celery是一个功能完备的即插即用的任务队列

Celery适用异步处理问题,比如发送邮件,文件上传,图像处理等等比较耗时的操作,我们可将其异步执行,这用可以减少用户的等待时间,提高用户体验.

Celery特点:

1.简单,易于使用和维护

2.高效,单个Celery进程每分钟可以处理百万个任务

3.灵活,Celery中几乎每个部分都可以自定义扩张

4.Celery非常易于集成到一些web开发框架中

安装Celery

pip install celery

Celery组成结构

任务队伍是一种跨线程,跨机器工作的一种机制

任务队列中包含任务的工作单元,有专门的工作进程持续不断的监视任务队列,并从中获取新的任务处理

Celery通过消息设置进行通信,client(客户端)-->broker(任务队列)-->worker(任务处理者)

一个Celery系统可以包含很多的worker和broker,可增强横向拓展性和高可用性能

Celery组成结构是生产者消费者模型的一种体现

Celery的使用

 

1.创建Celery异步任务文件

创建如以下文件夹

2.创建应用对象/客户端/client

创建main.py文件,用于作为celery的启动文件

from celery import Celery


#创建Celery对象
#参数main 设置脚本名
app = Celery('celery_tasks')

#加载配置文件
app.config_from_object('celery_tasks.config')

3.中间人broker

1.RabbitMQ

细节链接 http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq

2.redis

这里用redis实现

创建config.py文件

broker_url = "redis://127.0.0.1/14"
result_backend = "redis://127.0.0.1/15"

4.创建任务,并让celery检测

创建任务,在sms下创建tasks.py

from libs.yuntongxun.sms import CCP
from celery_tasks.main import app

#可以设置name参数
@app.task(name='send_sms_code')
def send_sms_code(mobile,sms_code):

    ccp = CCP()
    ccp.send_template_sms(mobile, [sms_code, 5], 1)

 

然后在main.py中添加代码

#自动加载任务
app.autodiscover_tasks(['celery_tasks.sms'])

5.创建worker

添加配置,将worker创建到Django环境中,完整代码为,main.py

from celery import Celery

#进行Celery允许配置
# 为celery使用django配置文件进行设置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mall.settings'


#创建Celery对象
#参数main 设置脚本名
app = Celery('celery_tasks')

#加载配置文件
app.config_from_object('celery_tasks.config')

#自动加载任务
app.autodiscover_tasks(['celery_tasks.sms'])

6.指令执行

需要早虚拟环境中运行,在终端运行

celery -A celery对象的路径 worker -l info

例:celery -A celery_tasks.mian worker -l info

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值