业务端后台:通过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异步任务的更多相关文章

  1. celery分布式异步框架

    1.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件( ...

  2. flask结合celery实现异步响应HTTP请求

    摘要: 1.场景描述 2.flask介绍 3.celery介绍 4.项目伪代码记录 5.几个备注点 内容: 1.场景描述 最近在优化用户画像的东西,要开发一个给文本打标签的服务:我这边需要提供一个HT ...

  3. Flask实战第66天:celery实现异步任务

    Celery文档:http://docs.celeryproject.org Celery 通过消息进行通信,用专用的工作线程不断监视任务队列以执行新工作. Celery需要消息传输来发送和接收消息. ...

  4. celery执行异步任务和定时任务

    一.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件 ...

  5. celery 分布式异步队列框架使用方法

    简介: Celery  是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery ...

  6. Celery分布式异步任务框架

    一.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统.专注于实时处理的异步任务队列,同时也支持定时任务 二.Celery架构 1.Celery的架构由三部分组成: 消 ...

  7. Django使用Celery进行异步任务

    Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...

  8. celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决

    今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...

  9. Task异步编程

    Task异步编程中,可以实现在等待耗时任务的同时,执行不依赖于该耗时任务结果的其他同步任务,提高效率. 1.Task异步编程方法签名及返回值: a) 签名有async 修饰符 b) 方法名以 Asyn ...

随机推荐

  1. GO学习-(29) Go语言操作etcd

    Go语言操作etcd etcd是近几年比较火热的一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现,本文主要介绍etcd的安装和使用. etcd etcd介绍 etcd是使用Go语 ...

  2. Step By Step(Lua数据结构)

    Step By Step(Lua数据结构) Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础.如数组.记录.线性表.队列和集合等,在Lua中都可以通过table来表示.     ...

  3. 模糊视频帧插值:CVPR2020论文点评

    模糊视频帧插值:CVPR2020论文点评 Blurry Video Frame Interpolation 论文链接:https://arxiv.org/pdf/2002.12259.pdf 摘要 现 ...

  4. 深入 Go 中各个高性能 JSON 解析库

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/535 其实本来我是没打算去看 JSON 库的性能问题的,但是最近我对 ...

  5. C# Net Core 使用 itextsharp.lgplv2.core 把Html转PDF

    C# Net Core 使用 itextsharp.lgplv2.core 把Html转PDF 只支持英文(中文我不知道怎么弄,懂的朋友帮我看一下)!!!!![补充:评论区的小伙伴已解决] 引入包it ...

  6. ConcurrentSkipListSet - 秒懂

    疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...

  7. SpringBoot代码与jar包分离部署

    第一步,打出带有jar包的SpringBoot工程 首先配置pom.xml文件 <build> <finalName>demo</finalName> <pl ...

  8. 「10.10」神炎皇(欧拉函数)·降雷皇(线段树,DP)·幻魔皇

    A. 神炎皇 很好的一道题,可能第一次在考场上遇到欧拉函数 题意:对于一个整数对 $(a,b)$,若满足 $a\times b\leq n$且$a+b$是$a\times b$的因子, 则称为神奇的数 ...

  9. Linux命令大全之帮助命令及压缩命令

    man(manual):帮助命令 help用于解释shell内部命令 格式:help shell内部命令 ls 命令  --help man 命令 info 命令 .zip    .gz    .bz ...

  10. Jenkins 构建自动化 .NET Core 发布镜像

    Jenkins 构建自动化 .NET Core 发布镜像 导读 在本章中,将介绍如何在 Linux 下使用 Docker 部署.启动 Jenkins,编写脚本,自动化构建 .NET Core 应用,最 ...