您的位置:首页 > 编程语言 > Python开发

python_Django中的异步任务,处理耗时任务celery

2019-03-27 20:53 811 查看

1.Celery介绍

点击查看Celery参考文档
Celery是一个功能完备即插即用的任务队列
Celery适用异步处理问题,比如发送邮件、文件上传,图像处理等等比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用户体验
2.Celery特点:

简单,易于使用和维护,有丰富的文档
高效,单个Celery进程每分钟可以处理数百万个任务
灵活,Celery中几乎每个部分都可以自定义扩展
Celery非常易于集成到一些web开发框架中

3.安装

pip install celery

4.创建celery_tasks包
创建main.py文件,作为启动异步文件

from celery import Celery
创建Celery对象 设置脚本名
app = Celery('celery_tasks')
#加载配置文件
app.config_from_object('celery_tasks.config')

5.配置文件中的内容
在celert_tasks文件夹下创建config.py文件
Redis也是一款功能完备的broker可选项,但是其更可能因意外中断或者电源故障导致数据丢失的情况。
里面写入redis的配置,也可用RabbitMQ来进行配置

#broker
broker_url = "redis://127.0.0.1/14"
#任务储存队列
result_backend = "redis://127.0.0.1/15"

6.创建异步任务

在celert_tasks文件中创建一个脚本文件包,包中创建文件tasks.py
在tasks.py文件中写异步任务

@脚本名.task(name="方法名")
def 方法名():
方法内容。。。

7.加载异步任务
在异步文件包中的main.py文件中写
#自动加载任务

app.autodiscover_tasks(['celery_tasks.sms'])

8.创建worker 进行启动celery
示例:此处演示把worker创建到ubuntu虚拟机中,ubuntu作为Celery服务器
添加配置

from celery import Celery
#进行Celery允许配置
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'])

9.启动
#我们需要指令让Celery单独执行
#需要在虚拟环境中执行

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

10.触发异步任务
调用异步方法

方法名.delay()
delay()中可以填写方法需要的参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: