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

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()中可以填写方法需要的参数
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值