Celery 实现异步任务-one
celery异步任务:
环境准备
安装celery ,django-celery.
就是一个专注于实时处理和任务调度的分布式队列。
可以异步执行的任务交给后台处理,以防网络阻塞,减小响应时间 celery使用:
- 在工程目录下创建一个celery_tasks文件包用于保存celery异步任务。 
- 在celery_tasks目录下创建config.py文件,用于保存celery的配置信息,储存在redis数据库中。 - broker_url = "redis://127.0.0.1/14" - 在celery_tasks目录下创建main.py文件,用于作为celery的启动文件: - from celery import Celery 
 
 # 为celery使用django配置文件进行设置
 import os
 if not os.getenv('DJANGO_SETTINGS_MODULE'):
 os.environ['DJANGO_SETTINGS_MODULE'] = 'meiduo_mall.settings.dev'
 
 # 创建celery应用
 app = Celery('meiduo')
 
 # 导入celery配置
 app.config_from_object('celery_tasks.config')
 
 # 自动注册celery任务
 app.autodiscover_tasks(['celery_tasks.sms'])- 配置celery - import djcelery 
 djcelery.setup_loader()
 #末尾添加
 CELERYBEAT_SCHEDULER = ‘djcelery.schedulers.DatabaseScheduler‘ # 这是使用了django-celery默认的数据库调度模型,任务执行周期都被存在你指定的orm数据库中 #INstalled_apps
 INSTALLED_APPS = (
 ‘django.contrib.admin‘,
 ‘django.contrib.auth‘,
 ‘django.contrib.contenttypes‘,
 ‘django.contrib.sessions‘,
 ‘django.contrib.messages‘,
 ‘django.contrib.staticfiles‘,
 ‘djcelery‘, #### 这里增加了djcelery 也就是为了在 django admin里面可一直接配置和查看celery
 ‘blog‘, ###
 )
举例:发送短信
在celery_tasks目录下创建sms目录,用于放置发送短信的异步任务相关代码。
将提供的发送短信的云通讯SDK放到celery_tasks/sms/目录下。
在celery_tasks/sms/目录下创建tasks.py文件,用于保存发送短信的异步任务.
  import logging
     from celery_tasks.main import app
     from .yuntongxun.sms import CCP
     logger = logging.getLogger("django")
     # 验证码短信模板
     SMS_CODE_TEMP_ID = 1
     @app.task(name='send_sms_code')
     def send_sms_code(mobile, code, expires):
         """
         发送短信验证码
         :param mobile: 手机号
         :param code: 验证码
         :param expires: 有效期
         :return: None
         """
         try:
             ccp = CCP()
             result = ccp.send_template_sms(mobile, [code, expires], SMS_CODE_TEMP_ID)
         except Exception as e:
             logger.error("发送验证码短信[异常][ mobile: %s, message: %s ]" % (mobile, e))
         else:
             if result == 0:
                 logger.info("发送验证码短信[正常][ mobile: %s ]" % mobile)
             else:
                 logger.warning("发送验证码短信[失败][ mobile: %s ]" % mobile)
在verifications/views.py中改写SMSCodeView视图,使用celery异步任务发送短信.
 from celery_tasks.sms import tasks as sms_tasks
     class SMSCodeView(GenericAPIView):
         ...
             # 发送短信验证码
             sms_code_expires = str(constants.SMS_CODE_REDIS_EXPIRES // 60)
             sms_tasks.send_sms_code.delay(mobile, sms_code, sms_code_expires)
             return Response({"message": "OK"})
Celery 实现异步任务-one的更多相关文章
- celery分布式异步框架
		1.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件( ... 
- celery执行异步任务和定时任务
		一.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件 ... 
- celery 分布式异步队列框架使用方法
		简介: Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery ... 
- Celery分布式异步任务框架
		一.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统.专注于实时处理的异步任务队列,同时也支持定时任务 二.Celery架构 1.Celery的架构由三部分组成: 消 ... 
- Django使用Celery进行异步任务
		Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ... 
- celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决
		今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ... 
- 在tornado中使用celery实现异步任务处理之中的一个
		一.简单介绍 tornado-celery是用于Tornado web框架的非堵塞 celeryclient. 通过tornado-celery能够将耗时任务增加到任务队列中处理, 在celery中创 ... 
- flask结合celery实现异步响应HTTP请求
		摘要: 1.场景描述 2.flask介绍 3.celery介绍 4.项目伪代码记录 5.几个备注点 内容: 1.场景描述 最近在优化用户画像的东西,要开发一个给文本打标签的服务:我这边需要提供一个HT ... 
- Django项目中使用celery做异步任务
		异步任务介绍 在写项目过程中经常会遇到一些耗时的任务, 比如:发送邮件.发送短信等等~.这些操作如果都同步执行耗时长对用户体验不友好,在这种情况下就可以把任务放在后台异步执行 celery就是用于处理 ... 
随机推荐
- Golang知识图谱
			原:https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0?from=timeline 百度脑图重制:http://naotu.bai ... 
- 11.8Django中的组件content_type
			2018-11-8 18:59:11 在Django中已经有一个contenttype这个组件,并且在python manage.py makemigrations 和migrate的时候,一起在数据 ... 
- memoization提升递归效率
			从开通博客到目前为止,也有一年了,刚开始的写了一篇工作的感想,然后就一直不知道写什么,看园子里的文章实在是很专业,怕自己写的太水.但是,写一些东西总归是好的,于是就当作是记笔记一样,开始写第一篇技术类 ... 
- What do cryptic Github comments mean?
			LGTM — looks good to me ACK — acknowledgement, i.e. agreed/accepted change NACK/NAK — negative a ... 
- java Api 读取HDFS文件内容
			package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ... 
- Python学习之旅(三十三)
			Python基础知识(32):网络编程(Ⅰ) 网络通信是两台计算机上的两个进程之间的通信,而网络编程就是如何在程序中实现两台计算机的通信 P协议负责把数据从一台计算机通过网络发送到另一台计算机 TCP ... 
- java_工厂模式
			定义: 初学者总是把所有的代码写在一个类里面,这样是非常危险的,因为所有错误集中在一个类里了,而且代码一长,调试就很困难 所以参照工厂流水线,分车间分模块来写代码,在实际操作中也就是说将代码模块化,封 ... 
- 单片机小白应该如何学习stm32的一些实践心得!
			嵌入式搬砖道路上的大三狗一枚,撑死算个初学者吧.才学有限,下面仅仅是本人对STM32学习的一点心得与建议,希望对题主有帮助吧. 心得:本人当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就 ... 
- VAE (variational autoencoder)
			https://www.zhihu.com/question/41490383/answer/103006793 自编码是一种表示学习的技术,是deep learning的核心问题 让输入等于输出,取 ... 
- LeetCode 993 Cousins in Binary Tree 解题报告
			题目要求 In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k ... 
