了解Celery:
celery是一种即插即用的任务队列。
celery适合异步处理任务,如发送短信、邮件、文件上传、图像处理等比较耗时的操作,可将其异步执行,用户不需要等待太多时间,提高用户体验。
特点:
简单易于使用。
高效,单个celery进程每分钟可以处理数百万个任务
灵活:celery中几乎每个部分都可以自定义扩展
celery非常易于集成到一些web开发框架中
####组成结构
导入celery模块 创建celery_tasks/main.py文件
from celery import Celery
创建celery实例对象,加载配置 ,即创建client客户端
# 创建celery实例 app = Celery('脚本名') # 加载配置文件 注意从celery文件夹开始 app.config_from('celery配置文件位置') # 设置自动加载任务 app.autodiscover_tasks(['celery_tasks.任务名'])
创建中间人broker
中间人broker有下列几种方案进行选择:
创建任务,并让celery检测
from libs.yuntongxun.sms import CCP from celery_tasks.main import app #可以设置name参数 @app.task(name='send_sms_code') # 使用celery实例对象装饰@app.task() def send_sms_code(mobile,sms_code): ccp = CCP() ccp.send_template_sms(mobile, [sms_code, 5], 1)
celery检测任务
app.autodiscover_tasks(['celery_tasks.任务名'])
创建worker
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'])
celery -A celery对象的路径 worker -l info
后台显示如图