位置: IT常识 - 正文

celery的介绍和使用(celery eventlet)

编辑:rootadmin
celery介绍 celery是一个异步任务框架,它可以执行异步任务、延迟任务、定时任务 异步任务框架简述: 1)celery可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket) 2)celery服务为为其他项目服务提供异步解决任务需求的 注:会有两个服务同时运行,一个是项目服务,一 ... celery介绍

推荐整理分享celery的介绍和使用(celery eventlet),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:celery用法,celery作用,celeryjuice,celeryjuice,celery使用场景,celery组成部分,celery用法,celery作用,内容如对您有帮助,希望把文章链接给更多的朋友!

celery是一个异步任务框架,它可以执行异步任务、延迟任务、定时任务

异步任务框架简述:

1)celery可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)2)celery服务为为其他项目服务提供异步解决任务需求的注:会有两个服务同时运行,一个是项目服务,一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求Celery架构

Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成。

消息中间件

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等

任务执行单元

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储

Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等

使用场景

异步执行:解决耗时任务,将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等

延迟执行:解决延迟任务

celery的介绍和使用(celery eventlet)

定时执行:解决周期(周期)任务,比如每天数据统计

Celery的安装配置

pip install celery gevent

windows环境下启动celery

# module为python module名celery -A <module> worker -l info -P geventcelery执行异步任务

采用包架构封装(多任务结构)

在项目文件project下新建一个celery包

project ├── celery_task # celery包 │ ├── __init__.py # 包文件 │ ├── celery.py # celery连接和配置相关文件,且名字必须叫celery.py │ └── tasks.py # 所有任务函数 ├── add_task.py # 添加任务 └── get_result.py # 获取结果

celery.py

# 导入模块from celery import Celery# 指定任务中间件和任务处理仓库为redis里的第一个库,后面1表示第一个,2表示第二个。broker = 'redis://127.0.0.1:6379/1'backend = 'redis://127.0.0.1:6379/2'# backend='redis://:123456@127.0.0.1:6379/1' redis加密码写法# include列表里表示celery_task包里的task.py交给app处理app = Celery(__name__,broker=broker, backend=backend, include=['celery_task.tasks'])

task.py

from .celery import appimport time@app.task #添加该装饰器表示这个函数任务使用了celery框架的异步处理def add(n, m): print(n) print(m) time.sleep(10) print('n+m的结果:%s' % (n + m)) return n + m@app.taskdef low(n, m): print(n) print(m) print('n-m的结果:%s' % (n - m)) return n - m

add_task.py这个py文件是用来添加任务的,可以建在任意位置

from celery_task import tasks# 添加立即执行任务t1 = tasks.add.delay(10, 20)t2 = tasks.low.delay(100, 50)print(t1) # 获取的就是这个任务的id号# 添加延迟任务from datetime import datetime, timedeltaeta=datetime.utcnow() + timedelta(seconds=10)tasks.low.apply_async(args=(200, 50), eta=eta)

get_result.py这个py文件是用来获取任务处理的结果的

from celery_task.celery import appfrom celery.result import AsyncResultid = '21325a40-9d32-44b5-a701-9a31cc3c74b5' #输入任务的id号if __name__ == '__main__': async = AsyncResult(id=id, app=app) if async.successful(): #如果这个任务执行成功 result = async.get() #得到结果 print(result) elif async.failed(): print('任务失败') elif async.status == 'PENDING': print('任务等待中被执行') elif async.status == 'RETRY': print('任务异常后正在重试') elif async.status == 'STARTED': print('任务已经开始被执行')celery执行延迟任务

在add_task.py里书写:

# 添加延迟任务from datetime import datetime, timedelta# datetime.utcnow()表示获取当前的utc时间,timedelta(seconds=10)表示加10秒timedelta括号里之后是时间类型,可以相加减eta=datetime.utcnow() + timedelta(seconds=10)# 使用的是apply_async这个方法,tasks.add这个是函数名,args括号里是函数add需要传的参数,eta必须是utc时间tasks.add.apply_async(args=(200, 50), eta=eta)celery执行定时任务

将celery.py添加以下定时配置

# 导入模块from celery import Celery# 指定任务中间件和任务处理仓库为redis里的第一个库,后面1表示第一个,2表示第二个。broker = 'redis://127.0.0.1:6379/1'backend = 'redis://127.0.0.1:6379/2'# backend='redis://:123456@127.0.0.1:6379/1' redis加密码写法# include列表里表示celery_task包里的task.py交给app处理app = Celery(__name__,broker=broker, backend=backend, include=['celery_task.tasks'])# 定时任务配置# 时区app.conf.timezone = 'Asia/Shanghai'# 是否使用UTCapp.conf.enable_utc = False# 任务的定时配置from datetime import timedeltafrom celery.schedules import crontabapp.conf.beat_schedule = { 'add-task': { 'task': 'celery_task.tasks.add', # celery_task.tasks.low这个是你函数任务的位置,task是固定的 'schedule': timedelta(seconds=3), # 每隔三秒执行一次 # 'schedule': crontab(hour=8, day_of_week=1), # 每周一早八点 'args': (300, 150), # 函数任务需要传入的参数 }}

然后在终端下cd到scripts文件夹

执行celery -A celery_task beat表示开始定时发布任务

本文链接地址:https://www.jiuchutong.com/zhishi/313083.html 转载请保留说明!

上一篇:Apache RocketMQ 5.0 笔记

下一篇:织梦通过ID搜索出对应文章结果的实现办法(织梦如何采集文章)

  • 七雄争霸兵符怎么获得(七雄争霸兵种相克)(七雄争霸兵符金木水火土在哪得)

    七雄争霸兵符怎么获得(七雄争霸兵种相克)(七雄争霸兵符金木水火土在哪得)

  • iqoo游戏空间怎么添加游戏(iqoo游戏空间怎么添加应用)

    iqoo游戏空间怎么添加游戏(iqoo游戏空间怎么添加应用)

  • 双十一未按时间发货赔偿吗(双十一未按时间发货)

    双十一未按时间发货赔偿吗(双十一未按时间发货)

  • i79700k配什么显卡(i79700k配什么显卡最合适)

    i79700k配什么显卡(i79700k配什么显卡最合适)

  • 华为开机一直循环华为logo(华为开机一直循环华为logo连电脑华为助手)

    华为开机一直循环华为logo(华为开机一直循环华为logo连电脑华为助手)

  • 校园扩列匹配失败怎么解决(校园扩列匹配失败是怎么回事)

    校园扩列匹配失败怎么解决(校园扩列匹配失败是怎么回事)

  • 怎么关闭快手共同好友(怎么关闭快手共享通讯录好友)

    怎么关闭快手共同好友(怎么关闭快手共享通讯录好友)

  • qq安全等级过低无法充值Q币怎么办(qq安全等级过低无法充值q币怎么办)

    qq安全等级过低无法充值Q币怎么办(qq安全等级过低无法充值q币怎么办)

  • nex3 5g配置(nex3 5g参数配置)

    nex3 5g配置(nex3 5g参数配置)

  • 苹果5手机怎样录屏(苹果5手机怎样下载软件)

    苹果5手机怎样录屏(苹果5手机怎样下载软件)

  • 为什么两个苹果手机同时接到电话(为什么两个苹果手机发短信是绿色的)

    为什么两个苹果手机同时接到电话(为什么两个苹果手机发短信是绿色的)

  • 苹果x外屏碎了需要换内屏吗(苹果x外屏碎了多少钱)

    苹果x外屏碎了需要换内屏吗(苹果x外屏碎了多少钱)

  • 小米cc9pro有5g吗(小米cc9pro有90hz吗)

    小米cc9pro有5g吗(小米cc9pro有90hz吗)

  • 天猫怎么找各种榜单(如何找到天猫的所有订单)

    天猫怎么找各种榜单(如何找到天猫的所有订单)

  • qq音乐怎么取消登录(qq音乐怎么取消关注的人)

    qq音乐怎么取消登录(qq音乐怎么取消关注的人)

  • 手机忘记放哪里了怎么找出来(手机忘记放哪里了怎么语音唤醒)

    手机忘记放哪里了怎么找出来(手机忘记放哪里了怎么语音唤醒)

  • 京东校园用户怎么注销(京东校园用户怎么领运费券)

    京东校园用户怎么注销(京东校园用户怎么领运费券)

  • 苹果照片怎么导入新手机(苹果照片怎么导入安卓手机)

    苹果照片怎么导入新手机(苹果照片怎么导入安卓手机)

  • mya-al10是什么型号(mya-al10是什么手机)

    mya-al10是什么型号(mya-al10是什么手机)

  • 微信封号给ip有关系吗(微信封号给ip有用吗)

    微信封号给ip有关系吗(微信封号给ip有用吗)

  • 幻灯片如何设置自动播放(幻灯片如何设置一个一个出来)

    幻灯片如何设置自动播放(幻灯片如何设置一个一个出来)

  • 小米5xotg功能怎么开启

    小米5xotg功能怎么开启

  • 计算机视觉OpenCV-图像直方图(计算机视觉opencv项目简单代码)

    计算机视觉OpenCV-图像直方图(计算机视觉opencv项目简单代码)

  • xinit命令  X服务器初始化程序(命令启动服务管理)

    xinit命令 X服务器初始化程序(命令启动服务管理)

  • 详解帝国cms使用自定义函数获取用户发表新闻数量的方法(帝国cms如何使用)

    详解帝国cms使用自定义函数获取用户发表新闻数量的方法(帝国cms如何使用)

  • 财税201920号文件解读
  • 暂估入账纳税调整填哪里
  • 企业购进固定资产时增值税如何处理
  • 工会账怎么做
  • 保险公司收车船使用税吗
  • 非税收入专用申报表
  • 年终奖是否列入社保基数
  • 开业税务登记的基本流程
  • 税务注销交什么税
  • 科目期初余额的录入需要从上级科目开始
  • 国地税合并后有多少个税种
  • 公司对外投资是股东会还是董事会
  • 未认证的进项税账务处理
  • 期末应交企业所得税怎么算
  • 半成品转成品会计分录
  • 购买印花税票怎么抵扣
  • 实收资本属于会计科目吗
  • 精创云所有者权益为负
  • 制造费用的
  • 6%的增值税专用发票怎么开
  • 投资款怎样缴印花税?
  • 个人付款可以开发票吗
  • 票据遗失情况说明格式及范文
  • 销售方针有哪些
  • 怎么做销售二手车
  • 利息支出手续费
  • 不动产权时间怎么确认
  • 海关专用缴款书怎么认证?
  • 支票可以自己给自己开吗
  • 本年固定资产投资额与不良贷款的关系
  • 事业单位的账务
  • 银行现金日记账表格
  • 资产负债表的资产总额怎么看
  • avsched32.exe是什么进程 avsched32进程有什么作用
  • 收到员工罚款分录怎么记账
  • 银行收取对公账户服务费有什么用
  • 冲回以前年度计提的坏账准备
  • wordpress采集教程
  • 最小全画幅的数值是多少
  • 计提本月银行借款利息是收付实现制还是权责发生制
  • 折旧提取后资金如何处理
  • word下划线怎么延长
  • 车辆购置税退税计算
  • framework4.0怎么打开
  • 土地给人家种了几十年还能要回来吗
  • mysql查询某个字段重复数据
  • 公司把股权转让给个人员工该怎么办
  • 收到普票和专票对企业的纳税影响
  • 住宿发票抵税
  • 车辆买的商业险全险,车辆出了事故,保险公司怎么赔
  • 收了对方预付款怎么打条
  • 公司为小规模纳税人
  • 捐赠货物的账务处理和纳税调整
  • 出售固定资产清理的账务处理
  • 公益捐赠仪式流程
  • sqlserver重命名表名
  • win7升级win10之后视频解码能力变弱
  • apache禁用trace方法
  • cmd指令让电脑乱码
  • launch pxe
  • windows8.1关闭开机密码
  • opencv与pil
  • js message事件
  • html淘宝搜索框代码
  • auto.js粘贴代码
  • js获取时间精确到毫秒
  • python黑魔法手册
  • JavaScript数据类型
  • jquery.filedownload.js
  • android布局文件详解
  • python电话本
  • 公共基础设施项目目录
  • 发票单位可以开一批吗?
  • 河北省税务局对外公开电话
  • 南通买房首付规定
  • 智利有什么自然景观
  • 所得税季度预缴申报表怎样填写
  • 职业年金利息计入哪个科目里面
  • 科技公司小规模纳税人与一般纳税人区别
  • 置换买新车划算吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设