Celery是一个异步的任务队列(也叫做分布式任务队列),一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需要的工具。
celery的优点
1:简单,容易使用,不需要配置文件
2:高可用,任务执行失败或执行过程中发生连续中断,celery会自动尝试重新执行任务
3:快速,一个单进程的celery每分钟可以处理上百万个任务
4:灵活,几乎celery的各个组件都可以被扩展
celery应用场景
1:异步发邮件,一般发邮件等比较耗时的操作,这个时候需要提交任务给celery就可以了,由worker进行发邮件操作
2:有些跑批量接口任务,需要耗时较长,也可以做成异步任务
3:定时调度任务
Celery与Django一起使用(以发送短信为例)
独立于项目新建一个package包
在package包中新建一个名为sms的package包
新建tasks.py文件
#定义耗时的函数 from utils.ytx_sdk.sendSMS import CCP from celery_tasks.main import app #为函数添加装饰器,这个函数就成为了celery的任务 @app.task def send_sms_code(mobile,code,expires,template_id): try: # CCP.sendTemplateSMS(mobile,code,expires,template_id) print(code) except: return '发送短信失败'
在package包中新建config.py
内容如下(中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。)
#指定代理人队列==>redis
broker_url='redis://127.0.0.1:6379/15'
在package包中新建main.py
内容如下(需要将task注册到celery应用中)
#启动工人的文件 from celery import Celery # 为celery使用django配置文件进行设置 import os if not os.getenv('DJANGO_SETTINGS_MODULE'): os.environ['DJANGO_SETTINGS_MODULE'] = 'yinyue.settings.dev' # 创建celery应用 app = Celery('yinyue') # 导入celery配置 app.config_from_object('celery_tasks.config') # 自动注册celery任务 app.autodiscover_tasks([ 'celery_tasks.sms' ])
在django框架对应模块的视图中使用
#调用celery的任务:任务名.delay(参数)
send_sms_code.delay(mobile,code,constants.SMS_CODE_EXPIRES/60,1)
启动celery服务: celery -A celery_tasks.main worker -l info
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 柏菲·珞叔作品集《金色大厅2》限量开盘母带ORMCD[低速原抓WAV+CUE]
- Gareth.T《sad songs(Explicit)》[320K/MP3][29.03MB]
- Gareth.T《sad songs(Explicit)》[FLAC/分轨][152.85MB]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[320K/MP3][63.06MB]
- 龚玥《金装龚玥HQCD》头版限量[WAV分轨]
- 李小春《吻别》萨克斯演奏经典[原抓WAV+CUE]
- 齐秦《辉煌30年24K珍藏版》2CD[WAV+CUE]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[FLAC/分轨][321.47MB]
- 群星 《世界经典汽车音乐》 [WAV分轨][1G]
- 冷漠.2011 《冷漠的爱DSD》[WAV+CUE][1.2G]
- 陈明《流金岁月精逊【中唱】【WAV+CUE】
- 群星《Jazz-Ladies1-2爵士女伶1-2》HQCD/2CD[原抓WAV+CUE]
- 群星《美女私房歌》(黑胶)[WAV分轨]
- 郑源.2009《试音天碟》24BIT-96KHZ[WAV+CUE][1.2G]
- 飞利浦试音碟 《环球群星监听录》SACD香港版[WAV+CUE][1.1G]