一、关于celery

celery是异步任务框架

使用前提,需要下载第三方模块

pip install celery

如果是Windows系统还需要额外模块支撑

pip install evetlet

更多详细内容请看官方文档资源

Celery 官网:http://www.celeryproject.org/

Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html

Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/

二、celery架构的构成

1 任务中间件 Broker,

其他服务提交的异步任务,放在里面排队

需要借助于第三方 redis rabbitmq

2 任务执行单元 worker

真正执行异步任务的进程

celery提供的

3 结果存储 backend

结果存储,函数的返回结果,存到 backend中

需要借助于第三方:redis,mysql

三、celery的应用场景

1. 异步执行:解决耗时任务

2. 延迟执行:解决延迟任务

3. 定时执行:解决周期任务

四、使用方法

第一步:搞清楚包的目录结构

第二步:在celery.py文件中写一下代码

from celery import Celery  # 导入celery模块
'''broker和backend对应的数据库可以是同一个,指定不同的两张表'''
broker = 'redis://127.0.0.1:6379/1' # broker对应一个数据库 执行任务列表在这里
backend = 'redis://127.0.0.1:6379/2' # backend对应一个数据库 执行结果列表在这里
'''写的各种任务在include=[]列表中注册'''
app = Celery('test', broker=broker, backend=backend, include=['celery_task.order_task', 'celery_task.user_task'])

第三步:在包内部,写task,任务异步任务

order_task.py文件

from .celery import app
import time
@app.task
def add(a, b):
print('-----', a + b)
time.sleep(2)
return a + b

user_task.py文件

from .celery import app
import time
@app.task
def send_sms(phone, code):
print("给%s发送短信成功,验证码为:%s" % (phone, code))
time.sleep(2)
return True

第四步:启动worker ,包所在目录下

celery  -A celery_task  worker -l info -P eventlet

第五步:其他程序 提交任务,被提交到中间件中,等待worker执行

因为worker启动了,就会被worker执行

在Django框架的其他任务,这就是两个框架互不相干,而关键时刻还拉一把,帮帮忙

from celery_task.user_task import send_sms
# 同步操作
# res = send_sms('999999',88888)
# print(res) # 异步步操作
res = send_sms.delay('999999',88888)
print(res) # a45ced2a-c285-41e1-9e40-643863d8467f

第五步:worker执行完,结果存到backend中

第六步:咱们要看执行结果,拿到执行的结果

from celery_task import app
from celery.result import AsyncResult
id = '7d39033c-4cc7-4af2-8d78-e62c277db183'
if __name__ == '__main__':
a = AsyncResult(id=id, app=app)
if a.successful(): # 执行完了
result = a.get() #
print(result)
elif a.failed():
print('任务失败')
elif a.status == 'PENDING':
print('任务等待中被执行')
elif a.status == 'RETRY':
print('任务异常后正在重试')
elif a.status == 'STARTED':
print('任务已经开始被执行')
#1 异步任务
任务.delay(参数)
# 延迟任务
任务.apply_async(args=[参数],eta=时间对象) # 如果没有修改时区,需要使用utc事件
# 定时任务
-需要启动beat和启动worker
-beat 定时提交任务的进程---》配置在app.conf.beat_schedule的任务
-worker 执行任务的 ### 使用步骤
# 第一步:在celery的py文件中写入
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False
# celery的配置文件#####
# 任务的定时配置
app.conf.beat_schedule = {
'send_sms': {
'task': 'celery_task.user_task.send_sms',
# 'schedule': timedelta(seconds=3), # 时间对象
# 'schedule': crontab(hour=8, day_of_week=1), # 每周一早八点
'schedule': crontab(hour=9, minute=43), # 每天9点43
'args': ('18888888', '6666'),
},
} ## 第二步:启动beat
celery -A celery_task beat -l info ## 第三步:启动worker
celery -A celery_task worker -l info -P eventlet # 注意点:
1 启动命令的执行位置,如果是包结构,一定在包这一层
2 include=['celery_task.order_task'],路径从包名下开始导入,因为我们在包这层执行的命令

celery介绍安装以及基本使用步骤的更多相关文章

  1. 安装Nvidia k80驱动步骤

    安装Nvidia k80驱动步骤 ------------------ 环境介绍: CentOS6 远程终端使用Xshell -------------------- 安装Nvidia k80驱动步骤 ...

  2. linux安装软件的几种方法----linux下编译安装软件的一般步骤

    linux安装软件的几种方法: 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...

  3. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

  4. celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决

    今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...

  5. vs2010如何安装mvc3,怎样安装,详细的步骤,从哪下载?请看这篇文章。

    vs2010如何安装mvc3,怎样安装,详细的步骤,从哪下载?请看这篇文章. 安装步骤:vs2010 -> vs2010sp1 -> AspNetMVC3Setup -> AspNe ...

  6. VM12安装OS X10.11步骤及说明

    参考文献: 1. http://www.crsay.com/network/enable-hardware-based-dep.html 2. http://jingyan.baidu.com/art ...

  7. centos6.4安装配置vpn服务器步骤详解

      centos6.4安装配置vpn服务器步骤详解,从安装VPN到配置VPN服务器.配置VPN服务器的路由转发功能,每一步都很详细   一.VPN服务器环境说明 操作系统:CentOS release ...

  8. 针对SharePointFarm场时安装部署OWA的步骤

    下面文章列出针对SharePointFarm场时安装部署OWA的步骤: http://blogs.technet.com/b/meamcs/archive/2013/03/27/office-web- ...

  9. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  10. 安装WebLogic的详细步骤

    安装WebLogic的详细步骤 1.在官网上下载WebLogic,详细地址如下 WebLogic 2.将WebLogic从官网上下载后wls1036_generic.jar 3.双击"wls ...

随机推荐

  1. Coursera Programming Languages, Part B 华盛顿大学 Homework 5

    这次 Week 2 的作业比较难,任务目标是使用 \(racket\) 给一个虚拟语言 \(MUPL\) (made-up programming language) 写一个解释器 所以单独开个贴来好 ...

  2. mark一下,python2.7版本不能直接print中文字符串,3.0以上的版本是可以的

    mark一下,python2.7版本不能直接print中文字符串,3.0以上的版本是可以的

  3. 威纶通作为modbusTcp主站应用

    1.在威纶通中添加modbus Tcp,作为主机,在Tcp服务器客户端模型中作为客户端: 2.威纶通地址与modbus标准功能码的对应关系: 地址1x_single_Bit,对应02功能码(读输入线圈 ...

  4. charles3.11.1抓https包

    结论先行: 用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求 加固之后的包[也就是要上应用市场的包],抓不到https请求 电脑上的操作: 1. 安装证书[电脑上安装了charl ...

  5. Ansible AWX

    Ansible简介 ansible是一个非常简单的it自动化平台,使得程序和系统更易于部署.ansible本质是一个进行封装的shell,优点在于它是去中心化的工具,可以直接通过ssh远程管理主机,实 ...

  6. Two Sum:给出一个整数数组,返回两个数的下标值,令其和等于一个指定的目标值 #Leetcode

    // Given nums = [2, 7, 11, 15], target = 9, // Because nums[0] + nums[1] = 2 + 7 = 9, // return [0, ...

  7. ubuntu14搭建内网gitlab服务器

    平台 宿主机系统版本:Ubuntu 14.04.5 LTS gitlab软件版本:11.10.8-ee 验证web浏览器版本:Mozilla Firefox 68.3.0esr 安装firefox浏览 ...

  8. wait_event_interruptible() 等待队列

    在Linux驱动程序中,可以使用等待队列(Wait Queue)来实现阻塞进程的唤醒. 1.定义"等待队列头部" wait_queue_head_t my_queue; wait_ ...

  9. Jmeter 接口自动化 对变量【登录密码】进行加密处理

    在我们使用Jmeter测试的过程中,尤其是接口测试,有时候需要对参数进行MD5加密后再进行操作: Jmeter自带的就有MD5加密需要使用的到的jar(注意jmeter版本):commons-code ...

  10. 004Java的一些基本概念

    004Java的一些基本概念 1.Java特性和优势 Java至少具有以下特性: 简单性(没有头文件.没有指针运算.也没有分配内存等操作) 面向对象(万物皆对象) 可移植性(一次编写,到处运行 Wri ...