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()中可以填写方法需要的参数
相关文章推荐
- Django 使用celery做异步任务处理
- Python Django Celery 实现异步任务
- Python Django Celery 实现异步任务(二)使用rabbitmq 作为broker
- Python中异步的处理celery(任务队列)
- Django中如何使用django-celery完成异步任务2(转)
- python:在Django项目中使用Celery实现定时任务--简单版
- Django中使用django-celery完成异步任务(1)
- 基于Django与Celery实现异步队列任务
- Django中使用celery实现异步任务,并在后台运行(守护进程)
- Django Celery Redis 异步执行任务demo实例
- Django配置celery执行异步任务和定时任务
- 在python下比celery更加简单的异步任务队列RQ 推荐
- Django使用Celery异步任务队列
- 如何在asp.net中使用多线程及队列,异步处理一个耗时的任务(原创)
- 在python下比celery更加简单的异步任务队列RQ
- Django+Celery+Redis实现异步任务(发送邮件)
- django框架下celery+rabbitmq+flower完成异步任务
- Python开发【模块】:Celery 分布式异步消息任务队列
- 异步任务队列Celery在Django中的使用
- Django中如何使用django-celery完成异步任务1(转)