最新要闻
- 班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
- 当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
- 【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
- 每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
- 张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
- 【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
- 天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
- 世界即时看!匈牙利舞曲第五号_匈牙利舞曲
- 2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
- 每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
- 东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
- 世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
- Android 14首个公测版要来!Google I/O 2023定档5月10日
- 环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
- 天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
- 天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球热门:Celery框架的基本使用与介绍
- Celery介绍、安装、基本使用
- 一、Celery服务
- 1、celery架构
- 2、celery快速使用
- 3、celer包结构【使用包写一个小游戏】
Celery介绍、安装、基本使用
一、Celery服务
什么是Celery:
【资料图】
Celery是一个简单、灵活且可靠的,处理消息的分布式系统
- Celery可以用来做什么:
- 异步任务
- 定时任务
- 延迟任务
Celery的运行原理:
- 可以不依赖任何服务,通过自身命令,启动服务
- celery服务为其他项目服务提供异步解决任务需求
# 注:会有两个服务同时运行 - 项目服务 - celery服务 项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求 """人是一个独立运行的服务 | 医院也是一个独立运行的服务正常情况下,人可以完成所有健康情况的动作,不需要医院的参与;但当人生病时,就会被医院接收,解决人生病问题人生病的处理方案交给医院来解决,所有人不生病时,医院独立运行,人生病时,医院就来解决人生病的需求"""
1、celery架构
消息中间件:broker
- 提交的任务【函数】都放在这里, celery本身不能提供消息中间件
- 需要借助于第三方: redis或rabbitmq
任务执行单元:worker
- 真正执行任务的的地方,一个个进程中执行函数
结果储存:backend
- 函数return的结果都存储在这里, celery本身不提供结果存储
- 需要借助于第三方: redis或rabbitmq
使用场景:
- 异步执行:解决耗时任务
- 延迟执行:解决延迟任务
- 定时执行:解决周期任务
2、celery快速使用
Celery不支持在windows上直接运行,通过eventlet支持在win上运行
安装:
pip install celerypip install eventlet # windows需要安装
快速使用:
- 1、第一步:创建一个py文件(main.py),用于实例化celery对象,编写需要执行的函数 # 1、导入模块 from celery import Celery # 2、指定briker,用于存放提交的异步任务 broker = "redis://127.0.0.1:6379/1" # 3、指定backend,用于存放函数执行结束的结果 backend = "redis://127.0.0.1:6379/2" # 实例化celery对象 app = Celery("test", broker=broker, backend=backend) # 编写一个函数,装饰上celery对象 @app.task def add(a, b): import time time.sleep(3) print("add函数执行完成") return a + b - 2、第二步:再次创建一个py文件(run.py),用于将函数提交给celery # 1、导入刚才编写的函数 from main import add # 2、将任务提交给broker,函数需要的参数需要传入 res = add.delay(1, 2) # 3、提交后可以获得该任务的ID,可通过ID可以查询任务执行结果 print(res) # 0213d2c2-453e-41a8-a171-e31f1f2f4883 - 3、第三步:使用命令开启worker (也可以提前开启,任务提交后就会直接执行)# 启动worker命令,win需要安装eventlet# 启动需要进入main.py文件的目录下win:-4.x之前版本celery worker -A main -l info -P eventlet-4.x之后celery -A main worker -l info -P eventlet mac:celery -A main worker -l info- 4、第四步:worker会将执行的结果存在之前指定的broker目录下(指定的redis数据库)- 5、第五步:通过代码查看执行结果(创建新的py文件,专门用于查看执行结果) # 1、导入celery实例的对象 from main import app # 2、导入该模块用于查看结果 from celery.result import AsyncResult # 3、将提交的任务编号拿过来,用于查询结果 id = "0213d2c2-453e-41a8-a171-e31f1f2f4883" # 4、指定该文件为启动文件 if __name__ == "__main__": # 实例化对象,将任务的ID和celery实例化对象当作参数传入 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("任务已经开始被执行")
3、celer包结构【使用包写一个小游戏】
什么是包结构:通过将celery服务封装成包的形式,放在项目需要使用的时候导入即可
project ├── celery_task # celery包 │ ├── __init__.py # 包文件 │ ├── celery.py # celery连接和配置相关文件,且名字必须交celery.py │ └── tasks.py # 所有任务函数 ├── add_task.py # 添加任务 └── get_result.py # 获取结果
创建包:
创建一个包,名为:celery_task
- 1、第一步:在包下创建py文件(名字必须为celery.py) # 导入celery模块 from celery import Celery # 导入配置broker和backend from .settings import BACKEND, BROKER # 实例化celery对象 app = Celery("test", broker=BROKER, backend=BACKEND, include=["celery_task.order_task", "celery_task.user_task"])- 2、第二步:创建settings.py,用于存放配置 BROKER = "redis://127.0.0.1:6379/1" BACKEND = "redis://127.0.0.1:6379/2" - 3、第三步,创建py文件(task.py),用于存放需要执行的异步任务 # 导入celery实例对象 from .celery import app # 计算函数 @app.task() def add(a, b): print("计算结果为:", a + b) return True # 模拟发送短信 @app.task() def send_sms(mobile, code): print("已向手机号:%s 发送短信,验证码为:%s" % (mobile, code)) return True - 4、第四步:开启worker切换到celery所在的目录下,开启worker命令- 5、第五步:提桥任务: # 导入任务 from celery_bag.celery_task.task import send_sms, add # 提交任务 def add_func(a, b): return add.delay(a, b) def send_func(mobile, code): return send_sms.delay(mobile, code) - 6、触发任务提交: import os import redis from add_task import add_func, send_func from get_result import res_func POOL = redis.ConnectionPool(max_connections=100) conn = redis.Redis(connection_pool=POOL) func_list = { "1": add_func, "2": send_func } if __name__ == "__main__": while True: print(""" 1、异步计算器 2、模拟发送短信 3、查看任务执行状态 4、开启worker,并查看任务执行结果(需要重启系统) """) user_choice = input("欢迎来到celery测试系统,请输入您需要执行的功能编号>>>:").strip() while user_choice in func_list.keys(): if user_choice == "1": print("已进入异步计算器功能!") a = "请输入数字 1 " b = "请输入数字 2 " else: print("您已进入模拟发送短信功能") a = "手机号" b = "短信内容 " args_1 = input("请输入%s>>>:" % a).strip() args_2 = input("请输入%s>>>:" % b).strip() args_1 = int(args_1) args_2 = int(args_2) res = func_list.get(user_choice)(args_1, args_2) input(""" 任务提交完成! 请记录本次任务ID:%s 任意键返回上一层 """ % res) break if user_choice == "3": id = input("请输入任务ID>>>:") res = res_func(id) print(res) continue while user_choice == "4": try: os.system("CD D:\djangoProject\luffy_api\celery_bag\celery_task") os.system("celery -A celery_task worker -l info -P eventlet") except Exception as e: print("开始失败,出现错误,请重启系统") print(str(e)) break print("自动返回上一层") break else: print("编号输入有误,请重写输入") continue - 7、第七步:查看任务执行结果: # 导入celery实例 from celery_task.celery import app from celery.result import AsyncResult def res_func(id): id = id a = AsyncResult(id=id, app=app) if a.successful(): # 执行完了 result = a.get() if result: return "执行完成" elif a.failed(): return "任务失败,失败的原因可能是未开启worker" elif a.status == "PENDING": return "任务等待中被执行,当前任务较多或未开启worker" elif a.status == "RETRY": return "任务异常后正在重试" elif a.status == "STARTED": return "任务已经开始被执行,请稍后查询"
关键词:
环球消息!0.vim常用命令
【C++】购书系统问题测试&功能补充
环球热门:Celery框架的基本使用与介绍
班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
通用表表达式
【全球独家】关于docker镜像IMAGE的备份和还原操作
【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
世界即时看!匈牙利舞曲第五号_匈牙利舞曲
2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
Android 14首个公测版要来!Google I/O 2023定档5月10日
全球速讯:内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】
明解Redis(一)概述
环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
【环球热闻】日本双胞胎姐妹身高相差75厘米 获吉尼斯纪录认证
提升国民平均寿命25岁?创维汽车:让每位车主实现基本百岁人生
全球微速讯:Node 非服务脚本调试
分享一个可以早点下班的开发小技巧
【环球报资讯】SpringBoot启动控制台的banner是怎么回事
环球新资讯:AppUploader教程:如何注册账号并激活AppUploader
全球快看点丨Android工程接入UnityLibrary工程
【聚看点】存储一哥扛不住了!三星在售最旗舰SSD 990 PRO降至史低价
天天速看:15万买特斯拉 那得多“毛坯”?成本降50%是文字游戏
原生PCIe 5.0更安全!酷冷至尊GX1250 GOLD电源评测:满载电压偏移<0.1%
环球今热点:不再烧主板!ROG 2023系列内置环境光传感器:见光自动断电
索尼PS中国发文祝4位游戏女角节日快乐:蒂法、希里等出镜
全球微头条丨潍坊市寒亭区举行庆“三八”专场招聘会
k8s-安全机制
Docker全家桶入门到进阶教程,Docker快速上手
焦点滚动:Docker入门到高级教程(一)Docker 的用途
当前热议!卡车
前沿热点:小心上当 国外免费软件被不良人士玩坏:收费299
环球消息!比亚迪开通苹果NFC数字车钥匙功能 两款车型已支持
魅族换新Logo了!魅族20系列官宣定档3月30日
每日速讯:未获版号就擅自出版网络游戏 重庆一公司被罚45万元
在鸡面前画条直线为何它呆住不动 科普:只是在装死
每日报道:qiankun 的使用
当前热议!Linux常用的20个命令(下)
【天天播资讯】Linux网卡驱动程序
讯息:(数据库系统概论|王珊)第十一章并发控制-第一节:并发控制概述
【环球速看料】如何轻松学习网页设计和网页编程?
当猛男遇上脱毛仪:用前抗拒、用后真香
终身质保成笑话?女车主购入威马新车三年维保无配件
Win11不支持拖动任务栏 强行修改注册表后:画面尴尬了
快播:爱吃辣的人不容易得糖尿病?是真的吗?
天天观焦点:你的护照又升值了!我国与马尔代夫互免签生效 浏览量暴增200%
环球时讯:凌云B股(900957)3月8日主力资金净卖出558.00元
全球观察:跨境电商卖家如何应对拒付、盗卡
热推荐:前端设计模式——观察者模式
热消息:代码审计之旅之百家CMS
环球头条:Paxos算法理解与java实现
环球消息!5、Redis慢日志和key有效期
今日聚焦!锐龙7000无缘单条48GB DDR5内存!点亮后却无法启动
每日热门:卖断货!湖北最强汽车补贴火了 有人“从业十年没见过”
每日热门:4.5级后广东河源再次发生3.4级地震:官方科普地震来了怎么办
全球观察:全年出货量仅2.6亿 PC电脑透心凉:复苏要等Win12
全球通讯!ChatGPT版佛祖爆火出圈:施主、说出你的烦恼
GO语言学习笔记-数据篇 Study for Go ! Chapter four - Data
全球速读:Go 数据结构
精彩看点:如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!
最新资讯:vue组件更新引起组件更新的原因,如何引发组件的更新
播报:【JavaScript UI库和框架】上海道宁与Webix为您提供用于跨平台Web应用程序开发的JS框架及UI小部件
全球速看:平板电脑怎么连接wifi
8元保号没了!中国移动广东出手:最便宜4G套餐撤掉 同步下架5G全家享套餐
319元 小米米家智能直流变频塔扇2上市:吹一夏天电费仅0.65元
快看点丨燃油、纯电、混动:买轻卡你会选择谁?
柳宗元最著名的十首诗是什么?柳宗元在柳州的故事
天天通讯!基德谈欧文末节独砍17分:这就是他 他喜欢帮助他的球队赢球
天天微速讯:3张思维导图读懂 《钢铁是怎样炼成的》
VUE定时器任务(每天12点执行)
信息:mysql invalid conn排查
全球观速讯丨CNStack 多集群服务:基于 OCM 打造完善的集群管理能力
即时看!关于docker中-容器的管理操作-删除
韩国西江大学留学条件和费用是什么?韩国西江大学怎么样?
代课老师的养老保险什么时候启动?代课教师养老保险政策有哪些?
焦点热门:可抵抖音干半年!TVB淘宝直播间首播销售额达2350万
全球看点:一年脱轨1000次!美国俄亥俄州再发生铁路事故 卡车撞上火车
满满正能量!小学生拾得价值16万黄金后续:物归原主、获助学礼包
向残疾熊猫福菀泼水3游客身份未确定:初步断定为3女娃
一键开盖 耐热抗摔:哈尔斯Tritan材质单手开盖水杯15.9元发车
光棍节的由来和含义是什么?光棍节活动策划书
办公室副主任是什么级别?办公室副主任年度述职报告
手机厂商钟情的黄色配色 原来诺基亚十年前就有了
大小仅3.7GB:大佬基于Win10魔改经典WinXP系统
每日快报!为眼睛降低ISO感光度!万新偏光太阳镜大促:39.4到手 原价139元
焦点速递!跑车底盘+大电池!开了两天哪吒S 想把我的油车卖了
行走的27寸超大平板!小度推出添添闺蜜机 首发4999元
win7电脑怎么开启telnet命令?telnet命令的作用是什么?
暖暖环游世界怎么看收集度?暖暖环游世界兑换码2023
Win10系统怎么安装杜比音效驱动?杜比音效和普通音效有什么区别
中兴天机7哪个版本音质最好?中兴天机7手机参数