一、关于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. 创建一个本地CocoaPods库 并在项目中使用该库

    1.新建一个项目如下 2.往TestLib中添加两个文件 3.终端进入TestLib 生成git文件 然后提交到本地 git init git add . git commit -m '添加perso ...

  2. 专业家庭影音服务器-硬件平台x86+固态盘+sata机械盘

    提到影音绕不开的就是大容量存储,就目前情况机械硬盘的海量存储还是唯一选择,所以实现起来总是绕不开NAS这个思路,比较起来,常规PC系统,固态和机械相结合,或许才是终极解决方案. 老式硬件 过失的产品在 ...

  3. 更改NX TITLE为路径

    #include<iostream>#include <conio.h>#include <math.h>#include <stdio.h>#incl ...

  4. 使用powerdesigner连接MySQL并设置逆向工程

    使用powerdesigner连接MySQL并设置逆向工程 环境:powerdesigner15.1 MySQL5.7 win10 X64 1.安装mysql-connector-odbc-5.3.8 ...

  5. Day17-JavaSE总结

    不多说了,直接去看视频吧! 链接 完结撒花!!!

  6. copy file from remote server to local

    scp -r root@IP:/path/to/file(file path on the server) /path/to/filedestination(local path)

  7. Alibaba Cloud Linux 3.2104 64位安装php7.2.12

    1 安装php所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl curl ...

  8. IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number

    print('Epoch[{}/{}], loss:{:.6f}'.format(epoch+1,num_epoch,loss.data[0])) 将loss.data[0] 改为loss.item( ...

  9. 1js 高级

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. golang sync.Once用法

    sync.Once能确保实例化对象Do方法在多线程环境只运行一次,内部通过互斥锁实现 Do方法 Once类型的Do方法只接收一个参数,参数的类型必须是func(),即无参数无返回的函数.该方法的功能并 ...