位置: 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搜索出对应文章结果的实现办法(织梦如何采集文章)

  • vivox70pro+手电筒在哪里打开(vivox70pro手电筒怎么打开)

    vivox70pro+手电筒在哪里打开(vivox70pro手电筒怎么打开)

  • 中国银行app怎么查一年的收入(中国银行app怎么存定期存款)

    中国银行app怎么查一年的收入(中国银行app怎么存定期存款)

  • 支付宝代办的健康码如何删除(支付宝代办的健康码怎么注销)

    支付宝代办的健康码如何删除(支付宝代办的健康码怎么注销)

  • 微信号注销多久会生效(微信号注销多久后公安机关就查不到信息了)

    微信号注销多久会生效(微信号注销多久后公安机关就查不到信息了)

  • 电池很久没用唤醒方法(几年没用的电池唤醒)

    电池很久没用唤醒方法(几年没用的电池唤醒)

  • 电表显示跳闸黄灯(电表显示跳闸黄灯一直亮着怎么解决)

    电表显示跳闸黄灯(电表显示跳闸黄灯一直亮着怎么解决)

  • 华为nova7pro屏幕容易碎吗(华为nova7pro屏幕材质是谁家的)

    华为nova7pro屏幕容易碎吗(华为nova7pro屏幕材质是谁家的)

  • 华为mate30pro锁屏时间位置在哪(华为mate30pro锁屏步数怎么关闭)

    华为mate30pro锁屏时间位置在哪(华为mate30pro锁屏步数怎么关闭)

  • qq中的免费气泡有哪些(qq中的免费气泡怎么弄)

    qq中的免费气泡有哪些(qq中的免费气泡怎么弄)

  • 苹果11pro充电发出两声响(苹果11pro充电发烫)

    苹果11pro充电发出两声响(苹果11pro充电发烫)

  • 现在微信评论可以被别人看到吗(微信评论可以被删除吗)

    现在微信评论可以被别人看到吗(微信评论可以被删除吗)

  • 导热性好是散热快吗(导热性好的材料散热性好不好)

    导热性好是散热快吗(导热性好的材料散热性好不好)

  • 电脑周边产品有哪些(电脑周边产品有哪些公司)

    电脑周边产品有哪些(电脑周边产品有哪些公司)

  • 苹果录屏大师连不上(苹果录屏大师连不上?请用iTools扫一扫是啥意思)

    苹果录屏大师连不上(苹果录屏大师连不上?请用iTools扫一扫是啥意思)

  • 互联网开发维护是做什么的(互联网开发维护岗位职责)

    互联网开发维护是做什么的(互联网开发维护岗位职责)

  • 抖音好友可见会显示吗(抖音好友可见会提示字幕吗)

    抖音好友可见会显示吗(抖音好友可见会提示字幕吗)

  • scms-t需要开启吗(scmst)

    scms-t需要开启吗(scmst)

  • 华为允许安装未知应用权限在哪里设置(华为允许安装未知来源在哪里设置)

    华为允许安装未知应用权限在哪里设置(华为允许安装未知来源在哪里设置)

  • 两个imei码查哪个(手机两个imei码用哪个查询真伪)

    两个imei码查哪个(手机两个imei码用哪个查询真伪)

  • 换手机信息如何转移到另外手机上(换手机之后信息怎么转移)

    换手机信息如何转移到另外手机上(换手机之后信息怎么转移)

  • 苹果8掉电厉害怎么办(iphone8掉电很厉害)

    苹果8掉电厉害怎么办(iphone8掉电很厉害)

  • 打印当前页怎么设置(打印当前页怎么打wps)

    打印当前页怎么设置(打印当前页怎么打wps)

  • 手机号积分有什么用(手机号积分规则)

    手机号积分有什么用(手机号积分规则)

  • 华为9.0怎么信任软件(华为怎么设置信任设备)

    华为9.0怎么信任软件(华为怎么设置信任设备)

  • iphone怎样隐藏照片视频(iphone如何隐藏隐藏相册照片)

    iphone怎样隐藏照片视频(iphone如何隐藏隐藏相册照片)

  • 京东退货自提点在哪里(京东退货自提点本区域没有怎么办)

    京东退货自提点在哪里(京东退货自提点本区域没有怎么办)

  • 滴滴未成年不可独自乘车怎么取消(滴滴车未成年不能打车嘛)

    滴滴未成年不可独自乘车怎么取消(滴滴车未成年不能打车嘛)

  • 京东申诉进度在哪查询(京东申诉要多久)

    京东申诉进度在哪查询(京东申诉要多久)

  • 同步接收别人手机短信(如何同步接收别人手机信息)

    同步接收别人手机短信(如何同步接收别人手机信息)

  • 小规模纳税人没有税控盘怎么报税
  • 土地增值税与增值税
  • 水果店个体户怎么交税 广州
  • 现金流量为负的隐患
  • 个人转让住房要交哪些税费?
  • 金税三期国地税合并
  • 在大陆工作的香港明星
  • 房产公司收到的增值税
  • 实报实销电话费
  • 支付给客户的货款叫什么
  • 收到长期股权投资的现金股利
  • 注销地税需要什么资料
  • 上个月开的增值税发票这个月可以作废吗
  • 如何理解纳税人资格
  • 普票3点怎么算
  • 建筑企业在境外施工税收一共包括几个部分
  • 集团内部拆借资金
  • 企业所得税季报资产总额怎么填
  • 小规模增值税本期免税额怎么计算
  • 主营业务收入写不写明细
  • 个体餐饮店交税吗
  • 建设单位对工程施工的评价意见
  • 每个月的股利怎么计提?
  • 电脑开机弹出documents文件夹
  • 公益性捐赠包括向脱贫地区捐赠吗
  • 12306打不开怎么回事苹果手机
  • vue框架使用方法
  • 收到政府返还土地款 奖励 土地增值税
  • mac版chrome浏览器无法上网
  • nclaunch.exe - nclaunch进程有什么用 是什么意思
  • 购进的货物
  • 库存现金盘盈怎么做分录
  • 缴医保分录
  • 某建筑公司因施工期紧迫,事先未能与有关
  • 企业可以超范围经营吗
  • 融资性租赁会计处理计入固定资产
  • syms命令
  • 增值税会自动申报吗
  • 在树洞中休息的英语
  • php5.5
  • 员工报销垫付的钱怎么入账
  • 差旅费住宿费专票抵扣联贴在哪里
  • 基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现
  • 权责发生制下确认的未开票收入是否缴纳增值税
  • mysql集群三种方式
  • 数学建模赋权
  • 命令提示符用不了怎么办
  • acpi disabled
  • 当月开出的销项票一定要当月抵扣吗
  • sqlserver2008安装闪退
  • 年末未分配利润计算公式
  • 现金流量表的内部结构怎么算
  • 进项发票还未收到可以认证吗
  • 失业保险金退回短信
  • 开票金额大于收入金额
  • 物流公司的修理工资高吗
  • 成本核算的会计账户
  • 单位临时账户可以取现吗
  • 人力资源差额税率
  • sqlserver 获取字符位置
  • rhel7.4安装
  • bios启动项正确设置
  • mfc100udll
  • win10系统如何删除账户
  • swupdtmr.exe - swupdtmr进程是什么意思 什么作用
  • linux快捷命令
  • Linux下查看某一个程序所使用的内存方法
  • neoCapture.exe - neoCapture是什么进程 有什么用
  • win10预览在哪
  • linux系统修复
  • cocos2d开发的知名游戏
  • mvp功能
  • 常用的git操作
  • python到底怎么学
  • python 文件操作,读,写,指定位置
  • 手机申报税务不成功怎么办
  • 陕西税务厅
  • 怎么删除天眼查信息
  • 蜀山区税务局网站首页
  • 生育登记网上服务大厅山东
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设