celery task异步任务
业务端后台:通过python manage运行
运行用例时,用python manage运行时会卡,影响效率
celery task 本身自己也是个服务,异步处理case
异步:小明去给我买个东西,我去写代码,小明买完回来给我
同步:小明去给我买个东西,我在这里等着他回来
celery结构
--celery task
--run
--tasks #运行异步任何的核心地址
--config.py #存celery配置
--main.py #运行目录
安装命令:
pip install celery
pip install celery==4.4.7 #指定版本安装
pip install eventlet
一、config.py
- # 接收任务的中间件
- broker_url = "redis://:@127.0.0.1:6379/1"
- # 任务结果的中间件
- result_backend = "redis://:@127.0.0.1:6379/1"
二、main.py
- from celery import Celery
- import os,django
- if not os.getenv('DJANGO_SETTINGS_MODULE'):
- os.environ['DJANGO_SETTINGS_MODULE'] = 'sky.settings'
- app = Celery('sksystem')
- # 获取celery的配置信息
- app.config_from_object('celery_tasks.config')
- # 提供tasks的路径,自动发现需要运行的task任务
- app.autodiscover_tasks(['celery_tasks.run'])
- # Mac 安装
- # sudo pip install celery
- # 启动celery的方法 默认以cpu的核数多进程的方式启动
- # celery -A 应用路径 worker -l 日志级别
- # mac同学
- # celery -A celery_tasks.main worker -l info 普通启动
- # celery multi start w1 -A celery_tasks.main -l info --logfile=logs/celerylog.log --pidfile=logs/celerypid.pid 后台运行
- # celery flower -A celery_tasks.main 打开一个web页面启动 需要提前安装下flow 安装命令:pip install flower
- # win同学
- # pip install celery
- # pip install eventlet
- # celery -A celery_tasks.main worker -l info -P eventlet
- # -- * - **** ---
- # - ** ---------- [config]
- # - ** ---------- .> app: sksystem:0x103d0deb8 启动是那个app的任务
- # - ** ---------- .> transport: redis://10.168.100.21:6379/2 设置的broker的队列是那个
- # - ** ---------- .> results: redis://10.168.100.21:6379/3 设置backend的存储地址
- # - *** --- * --- .> concurrency: 4 (prefork) 默认启动的进程数
- # -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
- # --- ***** -----
- # -------------- [queues]
- # .> celery exchange=celery(direct) key=celery
- # 在view视图中只需要导入tasks中写好的任务方法 通过任务方法调用delay()即可
- # from celery_tasks.run.tasks import run_case
- # 调用task任务 参数可以在delay中传递,正常调用一样
- # run_case.delay()
三、Task.py
- # 通过装饰器 app.task 实现将普通函数变为celery的执行函数
- # name 给方法命名
- @app.task(name='demo')
- def demo():
- logger.info('info')
- logger.debug('debug')
执行启动命令后
- celery -A celery_tasks.main worker -l info -P eventlet
- 可以看到可执行的任务:
- [tasks]
- . demo
四、tests.py
- #测试
- from celery_tasks.run.tasks import demo
- #通过这个方法调用异步函数
- demo.delay()
- #调用日志
- [2021-01-23 22:13:28,277: INFO/MainProcess] celery@xiaolin-PC ready.
- [2021-01-23 22:13:28,288: INFO/MainProcess] pidbox: Connected to redis://127.0.0.1:6379/1.
- [2021-01-23 22:31:06,912: INFO/MainProcess] Received task: demo[fe18b516-40bc-47e4-8243-5451242bd4d8]
- [2021-01-23 22:31:06,914: INFO/MainProcess] demo[fe18b516-40bc-47e4-8243-5451242bd4d8]: info
- [2021-01-23 22:31:06,918: INFO/MainProcess] Task demo[fe18b516-40bc-47e4-8243-5451242bd4d8] succeeded in 0.0s: None
celery task异步任务的更多相关文章
- celery分布式异步框架
1.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件( ...
- flask结合celery实现异步响应HTTP请求
摘要: 1.场景描述 2.flask介绍 3.celery介绍 4.项目伪代码记录 5.几个备注点 内容: 1.场景描述 最近在优化用户画像的东西,要开发一个给文本打标签的服务:我这边需要提供一个HT ...
- Flask实战第66天:celery实现异步任务
Celery文档:http://docs.celeryproject.org Celery 通过消息进行通信,用专用的工作线程不断监视任务队列以执行新工作. Celery需要消息传输来发送和接收消息. ...
- celery执行异步任务和定时任务
一.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件 ...
- celery 分布式异步队列框架使用方法
简介: Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery ...
- Celery分布式异步任务框架
一.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统.专注于实时处理的异步任务队列,同时也支持定时任务 二.Celery架构 1.Celery的架构由三部分组成: 消 ...
- Django使用Celery进行异步任务
Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...
- celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决
今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...
- Task异步编程
Task异步编程中,可以实现在等待耗时任务的同时,执行不依赖于该耗时任务结果的其他同步任务,提高效率. 1.Task异步编程方法签名及返回值: a) 签名有async 修饰符 b) 方法名以 Asyn ...
随机推荐
- [论文阅读笔记] Structural Deep Network Embedding
[论文阅读笔记] Structural Deep Network Embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 现有的表示学习方法大多采用浅层模型,这可能不能 ...
- Jenkins代码自动部署相关文档
环境 centos 7.0+ Java JDK 1.8+ jenkins 2.220 maven 3.0+ git 1.8+ 注意事项 一. linux 安装 JDK (jdk-8u201-linux ...
- node.js学习(6)创建和删除目录
1 导入模块 fs 删除文件 # 同步 创建目录 删除目录 # 异步 创建目录
- 纯C++代码实现将像素矩阵保存为bmp图片
由于工作需要,时常需要将像素矩阵保存图片显示观看.为此,特地总结了三种使用纯C++代码生成bmp图片的方法.分别是使用自定义数据.从外界导入的txt和csv以及从图片中导入的数据. 1.使用自定义数据 ...
- zk客户端及锁的使用
1.生成zk客户端对象 private CuratorFramework buildClient() { logger.info("zookeeper registry center ini ...
- CMOS图像传感器同时感知和处理光学图像
CMOS图像传感器同时感知和处理光学图像 概述 近年来,机器视觉技术有了巨大的飞跃,现在已经成为各种智能系统的一个组成部分,包括自主车辆和机器人.通常,视觉信息由基于帧的摄像机捕获,转换成数字格式,然 ...
- Google Pixel 超分辨率--Super Resolution Zoom
Google Pixel 超分辨率--Super Resolution Zoom Google 的Super Res Zoom技术,主要用于在zoom时增强画面细节以及提升在夜景下的效果. 文章的主要 ...
- HiCar SDK概述
HiCar SDK概述 HUAWEI HiCar SDK 是 HUAWEI HiCar(以下简称 HiCar )为汽车硬件设备提供的软件开发工具包,为汽车硬件厂商接入 HiCar 提供应用 API 接 ...
- SOC,System on-a-Chip技术初步
SOC,System on-a-Chip技术初步 S O C(拼作S-O-C)是一种集成电路,它包含了电子系统在单个芯片上所需的所有电路和组件.它可以与传统的计算机系统形成对比,后者由许多不同的组件组 ...
- ffmpeg architecture(上)
ffmpeg architecture(上) 目录 介绍 视频-您看到的是什么! 音频-您在听什么! 编解码器-缩小数据 容器-音频和视频的舒适场所 FFmpeg-命令行 FFmpeg命令行工具101 ...