首页 > 其他分享 >celery简介与安装

celery简介与安装

时间:2023-09-04 14:36:04浏览次数:29  
标签:Celery task 简介 redis celery 任务 res 安装

前言

Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。它是一个任务队列,专注于实时处理,同时还支持任务调度。

可以使用的场景如下:

  • 异步发邮件,这个时候 只需要提交任务给celery 就可以了.之后 由worker 进行发邮件的操作 .
  • 跑批接口的任务,需要耗时比较长,这个时候 也可以做成异步任务 .
  • 定时调度任务等

 

Celery 简介

 

Celery 扮演生产者和消费者的角色,先了解一下什么是生产者消费者模式。

 

该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取出数据。

 

接下来需要弄清楚几个问题,谁生产数据(Task),谁是中间件(Broker),谁来消费数据(Worker),消费完之后运行结果(backend)在哪?

 

 

 

celery 的5个角色

 

  • Task 就是任务,有异步任务(Async Task)和定时任务(Celery Beat)
  • Broker 中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。Celery 本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。
  • Worker 执行任务的单元,它实时监控消息队列,如果有任务就获取任务并执行它。
  • Beat 定时任务调度器,根据配置定时将任务发送给Broker。
  • Backend 用于存储任务的执行结果。

 如下图所示

 

 celery的demo

  安装命令: pip install celery

  

from celery import Celery
# import  redis
# 创建一个Celery应用程序
#redis 设置了密码
app = Celery('mycelery', backend='redis://:[email protected]', broker='redis://:[email protected]')


#redis未设置密码
# app = Celery('my_app', backend='redis://150.158.47.37', broker='redis://150.158.47.37')

#@app.task 将函数转为celery任务
#@shared_task:这个装饰器与@task类似,但是它创建的任务是共享的,可以在多个应用程序中使用
@app.task def add_numbers(x, y): return x + y if __name__ == '__main__':
  #delay 触发任务 res = add_numbers.delay(3, 5) print(res) print(res.get()) # 等待结果并将其打印出来
  

  task任务装饰器:

  1. @task:这是最基本的任务装饰器,用于将一个函数转换为Celery任务。它可以带有参数来配置任务的行为。

  2. @shared_task:这个装饰器与@task类似,但是它创建的任务是共享的,可以在多个应用程序中使用。

  3. @task(bind=True):当您需要访问任务实例本身时,可以使用此装饰器。通过指定bind=True参数,任务函数的第一个参数将变成任务实例自身。

  4. @task(name='custom_name'):通过name参数,您可以为任务指定一个自定义的名字,而不是默认的函数名。

  5. @task(queue='custom_queue'):使用queue参数可以将任务分配给特定的队列,而不是默认队列。

常用的几个属性

  • res.task_id 任务id唯一的,可以根据id拿到结果
  • res.status 任务状态:PENDING、STARTED、RETRY、FAILURE、SUCCESS
  • res.get() 任务运行结果,必须要任务状态是'SUCCESS',才会有运行结果
  • r.successful() 返回布尔值,执行成功返回True
  • r.ready() # 返回布尔值, 任务执行完成, 返回 True, 否则返回 False.
  • r.wait() # 等待任务完成, 返回任务执行结果.
  • r.result # 任务执行结果.
  • r.state # 和res.status一样,任务状态:PENDING, START, SUCCESS

 

标签:Celery,task,简介,redis,celery,任务,res,安装
From: https://www.cnblogs.com/7dao/p/17676907.html

相关文章

  • docker桌面端安装mysql
    参考 https://www.yzktw.com.cn/post/735256.html1,搜索Images,mysql,选择合适的版本pull2,Images,中点击三角箭头,run,会弹出新建Containers弹框Containersname,随便写Ports需要写0Volumes选安装地址EnvironmentVarialbes需要加上密码MYSQL_ROOT_PASSWORD: 123456 3,运行......
  • Tokenization 简介
    Tokenization是将文本分割成更小的单位,称为"token"的过程。在自然语言处理中,token可以是单词、短语、句子或其他更小的文本单位,具体取决于任务和需求。Tokenization的目的是将文本分解成离散的、可处理的单元,以便进行进一步的文本处理和分析。它是自然语言处理任务的重要预处理步......
  • 自然语言工具包(Natural Language Toolkit,简称NLTK) 简介
    自然语言工具包(NaturalLanguageToolkit,简称NLTK)是一个广泛使用的Python库,用于处理和分析自然语言文本。它提供了各种工具和数据集,用于文本预处理、语言模型、词性标注、句法分析、语义分析、情感分析、文本分类等自然语言处理任务。以下是NLTK的一些主要功能和特点:1.丰富的语......
  • Linux安装IDEA
    下载idea.tar.gz(具体版本号就不写了)解压:sudotar-zxvfidea.tar.gz直接运行bin目录下的idea.sh即可:cdbinsudo./idea.sh如果有可视化界面,可以创建一个桌面图标,在桌面新建文件idea.desktop,然后输入以下内容[DesktopEntry]Version=2021.1Type=Application......
  • 安装Docker compose v2
    转载自好友随遇而安的博文。介绍目前Docker官方用GO语言重写了DockerCompose,并将其作为了dockercli的子命令,称为ComposeV2。安装首先要先安装docker,再进行接下来的安装。仅为当前用户安装$mkdir-p$HOME/.docker/cli-plugins$curl-Lhttps://github.co......
  • Bandicam下载 最新版下载安装 中文版介绍
    高清视频录制工具(Bandicam)是一款由韩国开发的高清录制视频的工具,别看高清视频录制工具(Bandicam)体积小巧,但是功能确实相当不错,其不但操作十分简单,而且录制出来的效果非常高清,让我们可以观看到高质量的视频。软件地址:看置顶贴解决在【录制设置】->【音频】的关于麦克风音量调整的......
  • k8s安装etcd出现Job for etcd.service failed......"journalctl -xe" for details.
    错误如下先按照提示,输入journalctl-xe看一些详细信息1、针对:startrequestrepeatedtooquicklyforetcd.service错误,解决办法如下vi/usr/lib/systemd/system/etcd.service在[service]部分添加:RestartSec=5(参数作用:如果服务需要被重启,这个参数的值为服务被重启前的......
  • 探索 Rust:高性能系统编程语言的魅力与安装指南
    Rust是什么?Rust是一门系统编程语言,旨在提供高性能、并发安全和内存安全的编程环境。它于2010年首次发布,由Mozilla开发,并在开源社区的支持下不断发展壮大。优点内存安全:Rust最重要的特点之一是内存安全。它通过引入所有权(ownership)、借用(borrowing)和生命周期(lifetimes)的概念,允......
  • docker二进制安装
    docker自动安装脚本下载软件wgethttps://download.docker.com/linux/static/stable/x86_64/docker-24.0.5.tgzwgethttps://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_641.安装docker和docker-compose将安装脚本install.sh和二进制......
  • 第01章-Spark SQL简介和常用语句
    第01章SparkSQL简介和常用语句21.1表21.1.1什么是SparkSQL中的表21.1.2内部表和外部表21.1.3视图31.1.4查看表描述31.2分区和分桶31.2.1什么是SparkSQL的分区(partition)31.2.2什么是SparkSQL的分桶(bucket)41.3写入数据51.3.1通过create写入数据51.3.2通过in......