首页 > 其他分享 >celery介绍和安装, celery快速使用, celery包结构

celery介绍和安装, celery快速使用, celery包结构

时间:2023-03-08 22:22:50浏览次数:40  
标签:task 安装 app celery 任务 print import 快速

celery介绍和安装, celery快速使用, celery包结构

celery介绍和安装

celery它是一个分布式异步框架,celery翻译过来是"芹菜"的意思
1.完成异步任务:可以提高项目的并发量,之前开启线程,现在使用celery,

2.完成延迟任务

3.完成定时任务

# 理解celery的运行原理

1)可以不依赖任何服务器,通过自身命令,启动服务
2)celery服务为为其他项目服务提供异步解决任务需求的
注:会有两个服务同时运行,一个是项目服务,一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求


# 我们可以这样来理解
人是一个独立运行的服务 | 医院也是一个独立运行的服务
	正常情况下,人可以完成所有健康情况的动作,不需要医院的参与;但当人生病时,就会被医院接收,解决人生病问题
	人生病的处理方案交给医院来解决,所有人不生病时,医院独立运行,人生病时,医院就来解决人生病的需求

架构

celery架构
1.任务中间件:broker(中间件),其他服务提交的异步任务,抖放在这里,celery本身是不提供中间件的,需要借助于第三方
2.任务执行单元:worker,真正执行任务的地方,一个个进程,执行函数
3.结果存储:backend,函数return的结果存储在这里,celery本身不提供结果存储,借助于第三方:redis,数据库,rabbitmq

img

celery快速使用

1.celery官网:http://www.celeryproject.org/
第一步:新建 main.py
from celery import Celery

broker = 'redis://127.0.0.1:6379/1'
backend = 'redis://127.0.0.1:6379/2'
app = Celery('test',broker=broker,backend=backend)
@app.task
def add(a,b):
    import time
    time.sleep(3)
    print(a+b,'------')
    return a+b

第二步:其他程序,提交任务
from main import add
# 同步调用
# res = add(5,6)
# print(res)

# 异步调用
res = add.delay(5,6)
print(res)         # 2abff7cc-2a84-4c9e-ba24-73f8777a8c6d
第三步:启动worker
# 启动worker命令,win需要安装eventlet
(luffy) D:\pythonProject\luffy_api2\scripts\celery>celery  -A main  worker -l info -P eventlet

第四步:worker会执行消息中间件中的任务,把结果存起来
第五步:拿执行的结果
from main import app
from celery.result import AsyncResult
id = '2abff7cc-2a84-4c9e-ba24-73f8777a8c6d'
if __name__ == '__main__':
    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('任务已经开始被执行')

image

celery包结构

project
    ├── celery_task  	# celery包
    │   ├── __init__.py # 包文件
    │   ├── celery.py   # celery连接和配置相关文件,且名字必须叫celery.py
    │   └── tasks.py    # 所有任务函数
    ├── add_task.py  	# 添加任务
    └── get_result.py   # 获取结果
第一步:新建包 celery_task
from celery import Celery
broker = 'redis://127.0.0.1:6379/1'
backend = 'redis://127.0.0.1:6379/2'
app = Celery('test', broker=broker, backend=backend, include=['celery_task.order_task', 'celery_task.user_task'])
第二步:在包内部,写task,任务异步任务
# order_task
from .celery import app
import time
@app.task
def add(a, b):
    print('-----', a + b)
    time.sleep(2)
    return a + b
# user_task
from .celery import app
import time
@app.task
def send_sms(phone, code):
    print("给%s发送短信成功,验证码为:%s" % (phone, code))
    time.sleep(2)
    return True
第三步:启动worker ,包所在目录下
celery  -A celery_task  worker -l info -P eventlet
第四步:其他程序 提交任务,被提交到中间件中,等待worker执行,因为worker启动了,就会被worker执行
from celery_task import send_sms
res=send_sms.delay('1999999', 8888)
print(res) 
第五步:worker执行完,结果存到backend中
第六步:查看结构
from celery_task import app
from celery.result import AsyncResult
id = '7d39033c-4cc7-4af2-8d78-e62c277db183'
if __name__ == '__main__':
    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('任务已经开始被执行')

标签:task,安装,app,celery,任务,print,import,快速
From: https://www.cnblogs.com/zx0524/p/17196492.html

相关文章

  • 路飞项目day_10 redis 列表 hash 通用 管道 celery简单操作
    目录今日内容详细一、redis之列表二、redis之hash三、redis其他操作四、redis管道五、django中使用redis六、celery介绍和安装七、celery快速使用八、celery包结构今日内......
  • Mac 安装psysh 详细步骤
    安装psysh是一个交互式PHP解释器,允许您在控制台中测试PHP代码,以下是在Mac上安装psysh的详细步骤:在终端中打开Composer安装文件:curl-sShttps://getcomposer.org/i......
  • Rocky Linux 9 安装 Node.js
    一、概要1.环境(1)RockyLinux9.1(2)Node.js16.0二、安装1.准备(1)更新仓库sudodnfupdate-y(2)安装NPM依赖的构建工具sudoyumgroupinstall'Deve......
  • 远程云服务器上docker安装redis的过程
    首先明确一点,云服务环境你已经安装好了docker 1.进入dockerhub官网查看你所需要的redis的版本信息https://registry.hub.docker.com/ ......
  • celery基本用法
    1celery介绍和安装#Celery是什么 -翻译过来是芹菜的意思,跟芹菜没有关系-框架:服务,python的框架,跟django无关-能用来做什么 -1异步任务-......
  • Celery框架的基本使用与介绍
    目录Celery介绍、安装、基本使用一、Celery服务1、celery架构2、celery快速使用3、celer包结构【使用包写一个小游戏】Celery介绍、安装、基本使用一、Celery服务什么......
  • Linux安装Docker
    Linux安装Docker1.CentOS安装DockerDocker分为CE和EE两大版本。CE即社区版(免费,支持周期7个月)EE即企业版,强调安全,付费使用,支持周期24个月。DockerCE分为s......
  • celery
    celery介绍是一个python的框架。主要用来解决定时任务异步任务延迟任务的框架官方文档https://docs.celeryq.dev/en/stable/运行原理1可以不依赖任何服务器,通......
  • 路飞-day9——redis之列表类型、redis之hash类型、redis其他方法、redis管道、django
    目录一、redis之列表(List)类型二、redis之hash(字典)类型三、redis其他方法(所有类型通用的方法)四、redis管道五、django中使用redis方式一方式二方案一方案二六、celery介绍......
  • Windows Git安装配置和Git多账户配置
    1、WindowsGit下载官网地址:https://git-scm.com/download/win根据自己系统版本,选择32位或者64位进行下载。2.Git安装转载帖子,非常详细:https://blog.csdn.net/muke......