仅仅是个人学习的过程,发现有问题欢迎留言

一、celery 介绍
celery是一种功能完备的即插即用的任务对列
celery适用异步处理问题,比如上传邮件、上传文件、图像处理等比较耗时的事情
异步执行,这样用户不需要等待很长的时间,提高用户的体验
celery是由python语言编写的,但是可以使用于许多语言,比如js、PHP等
二、celery的特点:
简单,易于使用和维护,有丰富的文档
高效,单个的celery进程每分钟可以处理数百个任务
灵活,celery中几乎每个部分都可以有自己的拓展
celery易于集成在一些web开发框架中
三、在Django框架中安装celery
1、进入虚拟环境
2、在终端中输入 pip install celery
 
四、celery的组成结构:
1、任务对列是一种跨线程、跨机器工作的机制;
2、任务对列中包含工作单元,有专门的工作进程持续不断的监听任务对列,并从中获取新的任务并处理;
3、celery通过消息进行通信,通常有一个client(任务发出者)通过broker(中间人)建立和worker(任务执行者)的通信
client发出消息到对列中,broker将对列中的信息派发给worker来处理
一个celery系统中可以包含多个worker和broker,可以增强横向的扩展性和高可用性
celery组成结构是生产者消费者模型的一种体现
五、celery在Django项目中的具体应用案例:
1、在项目的目录下创建一个celery_tasks文件夹
2、创建应用对象/客户端/client
2.1在celery_tasks的目录下创建一个main.py文件,作为celery的启动文件
"""
   celery:
必须先导入配置文件
创建celery实例
让celery加载broker
celery实例对象自动检测
  1、任务
  2、broker
  3、worker
  """
#导入工程的配置文件,可以通过复制工程manage.py文件中的信息
import os
from celery import Celery
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mall.settings")
#创建celery实例
#参数 main 其实就是给celery设置一个名字,这个名字唯一就可以
#推荐使用 文件路径
app = Celery(main='celery_tasks')
#让celery加载broker
app.config_from_object('celery_tasks.config')
#让celery实力对象自动检测任务
#参数:
#列表
#列表中需要填写 任务的包路径
app.autodiscover_tasks(['celery_tasks.sms'])
2.2在celery_tasks的目录下创建一个config.py文件,用于存放broker
本次项目中采用的Redis数据库作为中间人
celery需要一种解决消息发送和接受的方式,我们把这种用来储存消息的中间装置称为message
  可以使用RabbitMQ:是一个功能完备,稳定的,并且易于安装的broker,它是生产环境最优的选择
  可以采用Redis:也是一个功能完备broker,但是其可能因为意外中断或者电源故障导致数据丢失
"""
配置信息,单独放在一个文件中
broker 选择放在redis的14号库
"""
broker_url = 'redis://127.0.0.1/14'
#执行任务的结果保存再15号库
result_url = 'redis://127.0.0.1/15'

  2.3在celery_tasks的目录下创建一个sms文件包(例子是用来发送短信的,因此起名sms),在sms文件包中创建一个tasks.py文件,用于发布任务

from celery_tasks.main import app
from libs.yuntongxun.sms import CCP
#创建任务
"""
任务:
任务包所对应的py文件 必须为tasks.py
所谓的任务就是函数
这个函数必须被celery的实例对象的task装饰器装饰
这个任务必须被实力对象自动检测
"""
#bug task多了一个s,导致没任务
@app.task
def send_sms_code(mobile,sms_code):
CCP().send_template_sms(mobile,[sms_code,5],1)
2.5需要找到对应的视图中,导入任务
#在视图中导入celery
from celery_tasks.sms.tasks import send_sms_code
#delay 的参数同 send_sms_code 的参数
send_sms_code.delay(mobile,sms_code)

  

2.6、在终端中添加执行命令
celery -A celery实例对象所在的文件 worker -l info
celery -A celery_tasks.main worker -l info

分布式队列celery 异步----Django框架中的使用的更多相关文章

  1. celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

    一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...

  2. 异步分布式队列Celery

    异步分布式队列Celery 转载地址 Celery 是什么? 官网 Celery 是一个由 Python 编写的简单.灵活.可靠的用来处理大量信息的分布式系统,它同时提供操作和维护分布式系统所需的工具 ...

  3. celery异步任务框架

    目录 Celery 一.官方 二.Celery异步任务框架 Celery架构图 消息中间件 任务执行单元 任务结果存储 三.使用场景 四.Celery的安装配置 五.两种celery任务结构:提倡用包 ...

  4. Django框架中的Context使用

    Django框架中的Context使用 2017年11月09日 20:01:09 aweilark 阅读数:1113   转载自:http://www.aichengxu.com/python/606 ...

  5. Python的Django框架中forms表单类的使用方法详解

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  6. Python的Django框架中的Cookie相关处理

    Python的Django框架中的Cookie相关处理 浏览器的开发人员在非常早的时候就已经意识到. HTTP's 的无状态会对Web开发人员带来非常大的问题,于是(cookies)应运而生. coo ...

  7. Python的Django框架中的Context使用

    Python的Django框架中的Context使用 近期整理些Python方面的知识,一旦你创建一个 Template 对象,你能够用 context 来传递数据给它. 一个context是一系列变 ...

  8. Django框架中使用Echart进行统计的SQL语句

    最近想用Echart做数据统计的图形显示,数据来源是MySQL数据库,自然需要根据不同的搜索条件筛选出表中的数据,用比较多的就是时间的参数吧! 常用的mysql时间的条件进行检索的SQL语句: 数据表 ...

  9. Python中的Django框架中prefetch_related()函数对数据库查询的优化

    实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

随机推荐

  1. C++的重载操作符(operator)介绍(转)

    本文主要介绍C++中的重载操作符(operator)的相关知识. 1. 概述 1.1 what operator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将 ...

  2. NET的基本用法

    NET的基本用法 NET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP | HELPMSG | LOCALGROUP ...

  3. 使用js方法时,调用的方法名明明一致,但就是不管用,解决

    前提:代码全部写对 问题:调用的方法名明明一致,但就是不管用 举例:写了个function delete(){}方法, 点击调用delete方法,onclik="delete()" ...

  4. oracle 老用户数据导入新建用户

    $sqlplus/nolog       #使用PLSQL进入oracleSQL>conn/as sysdba #进入sysdba权限CREATE DIRECTORY datadir1 AS ' ...

  5. Win32汇编学习(5):绘制文本2

    这次我们将学习有关文本的诸多属性如字体和颜色等. 理论: Windows 的颜色系统是用RGB值来表示的,R 代表红色,G 代表绿色,B 代表蓝色.如果您想指定一种颜色就必须给该颜色赋相关的 RGB ...

  6. Excel 表格查找重复数据,去重复统计

    找出表格是否有重复数据: =IF(AND(G20=G19,D20=D19),"是","否") 筛选移除[重复的数据]然后开始统计 =SUBTOTAL(9,E2: ...

  7. HTML基础【2】:基础标签

    H系列标签(H1 ~ H6) 作用: 用于给文本添加标题语义 格式: <h1>xxxxxx</h1> 注意点 H 标签是用来给文本添加标题语义的,而不是用来修改文本的样式的 H ...

  8. maven eclipse配置 创建项目

    下载maven jar 可以去官网http://maven.apache.org/ 或者我的百度云http://download.csdn.net/detail/taopeng_100/9894787 ...

  9. springboot启动配置原理之二(运行run方法)

    public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); s ...

  10. 以太坊钱包开发系列2 - 账号Keystore文件导入导出

    以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...