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 ...
随机推荐
- 201871030138-杨蕊媛 实验二 个人项目—《D{0-1}背包问题》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...
- 机器学习PAL基本概念
机器学习PAL基本概念 本文介绍PAI-Studio.PAI-DSW及PAI-EAS的基本概念. PAI-Studio PAI-DSW PAI-EAS
- 使用Auto TensorCore CodeGen优化Matmul
使用Auto TensorCore CodeGen优化Matmul 本文将演示如何使用TVM Auto TensorCore CodeGen在Volta / Turing GPU上编写高性能matmu ...
- Win10 下python_appium的Android手机自动化环境搭建
前提: 已经安装好了Java环境,且配置了环境变量 已经安装python3.8.2,已经安装pycham. 一.安装appium_client ,pycham中也需要安装 二.安装node.js(需要 ...
- Kali 2021.2 最新安装教程 图文详解(保姆式)
0x00 前言 Kali Linux 新版本(2021.2)增加大量新工具和功能,感兴趣的小伙伴可以到kali官网查看相关介绍. 新版采用Xfce 4.16桌面环境,附上帅照! 0x01 安装环境 宿 ...
- nacos 实战(史上最全)
文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...
- Spring FactoryBean和BeanFactory 区别
1 BeanFactory 是ioc容器的底层实现接口,是ApplicationContext 顶级接口 spring不允许我们直接操作 BeanFactory bean工厂,所以为我们提供了App ...
- 题解 P2257 YY的GCD
P2257 YY的GCD 解题思路 果然数论的题是真心不好搞. 第一个莫比乌斯反演的题,好好推一下式子吧..(借鉴了blog) 我们要求的答案就是\(Ans=\sum\limits_{i=1}^{n} ...
- Linkerd 2.10(Step by Step)—使用 Debug Sidecar,注入调试容器来捕获网络数据包
Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 部署 ...
- Linux关闭打开防火墙命令
Linux下打开和关闭防火墙 1.及时生效,重启后复原 关闭:service iptables stop 开启:service iptalbes start 查看状态:service iptabl ...