首页 > 其他分享 >Celery介绍

Celery介绍

时间:2024-05-18 12:43:16浏览次数:20  
标签:异步 队列 介绍 Celery 处理 任务 执行

Celery官方文档:http://docs.celeryproject.org/

Celery是什么?

Celery 是一个 基于python开发的分布式异步消息任务队列,

通过它可以轻松的实现任务的异步处理,

如果你的业务场景中需要用到异步任务,就可以考虑使用celery,

举几个实例场景中可用的

例子:

  • 异步任务:将耗时的操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音频处理等等
  • 做一个定时任务,比如每天定时执行爬虫爬取指定内容
  • 还可以使用celery实现简单的分布式爬虫系统等等

Celery 在执行任务时需要通过一个消息中间件(Broker)来接收和发送任务消息,

以及存储任务结果, 一般使用rabbitMQ or Redis,后面会讲

Celery的优点

  • 简单:Celery 易于使用和维护,并且它 不需要配置文件 ,并且配置和使用还是比较简单的(后面会讲到配置文件可以有)
  • 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
  • 快速:单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级
  • 灵活: Celery 几乎所有部分都可以扩展或单独使用,各个部分可以自定义。

Celery的执行流程及架构

image-20240518121809454

Celery采用经典的生产者消费者模型,主要由以下部分组成

Celery Beat

  • 任务调度器,Beat进程会读取配置文件的内容
  • 周期性的将配置中到期需要执行的任务发送给任务队列

Producer

  • 需要在队列中进行的任务,一般由用户,触发器或者其他操作将任务入队,
  • 然后交由workers进行处理。
  • 调用了Celery提供的API,函数或者装饰器而产生任务并交给任务队列处理的都是生产者

Borker

  • 即消息中间件,在这指代任务队列本身,通常是redis或RabbitMQ。
  • Celery扮演了生产者和消费者的角色,
  • broker就是生产者和消费者存放/获取产品(任务)的地方(队列)

Worker

  • 执行任务的消费者,从Broker中取出任务并执行
  • 通常会在多台服务器运行多个消费者来提高执行效率

Backend

  • 任务处理完后保存状态信息或结果的地方
  • Celery 默认已支持 Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy 等方式。

实际使用

实际应用中,用户在web前端发起一个请求

我们只需要将请求所要求处理的任务丢入消息队列broker中

由空闲的worker去处理

处理的结果会暂存在后台数据库backend中。

我们可用在一台或多台及其上同时起多个worker进程来实现分布式的并行处理任务

标签:异步,队列,介绍,Celery,处理,任务,执行
From: https://www.cnblogs.com/Hqqqq/p/18199220

相关文章

  • django中使用celery
    通用方案将自定义的celery的包拉到django项目根目录在celery.py文件内导入django的环境变量这样才能正常启动worker或者beatfromceleryimportCeleryimporttimeimportos#必须要将django的环境变量加进去(在manage.py中复制)os.environ.setdefault('DJANGO_SETTINGS_M......
  • Celery包结构
    目录结构项目名├──celery_task #celery包│├──__init__.py#包文件│├──celery.py#celery连接和配置相关文件,且名字必须叫celery.py│└──user_tasks.py#所有用户相关任务函数 └──order_tasks.py#所有订......
  • Celery快速使用
    安装#0创建Python项目#1创建虚拟环境#2安装celerypipinstallcelery#3安装redis(消息队列和结果存储使用redis)pipinstallredis#4安装eventlet(win平台,如果是mac,linux不需要)pipinstalleventlet快速使用celery_demo.py--主文件fromceleryimportCel......
  • 使用django_celery_beat在admin后台配置计划任务
    使用步骤安装包pipinstalldjango-celery-beatapp注册app注册INSTALLED_APPS=[....'django_celery_beat',]配置文件:屏蔽原来的调度器CELERY_BEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler'设置时区LANGUAGE_CODE='z......
  • Flower 监控celery任务
    Flower监控celery任务如果不想通django的管理界面监控任务的执行,还可以通过Flower插件来进行任务的监控。Flower的界面更加丰富,可以监控的信息更全Flower是一个用于监控和管理Celery集群的开源Web应用程序。它提供有关Celeryworkers和tasks状态的实时信息功能【1】......
  • Celery admin监视任务
    在控制台监控任务执行情况,还不是很方便,最好是能够通过web界面看到任务的执行情况,如有多少任务在执行,有多少任务执行失败了等这个Celery也是可以做到了,就是将任务执行结果写到数据库中,通过web界面显示出来。这里要用到django-celery-results插件。通过插件可以使用Django的orm作......
  • Axure介绍
    AxureAxure是一款功能强大的原型设计工具,被广泛应用于用户体验设计领域。它的特点和使用方法使其受到了许多设计师和产品经理的青睐。交互设计Axure作为一款领先的原型设计工具,突出了其丰富的交互功能,为用户提供了广泛的设计自由度。无论是页面过渡、动画效果、还是表单交互,Axu......
  • css 让文字不被选中之-moz-user-select 属性介绍
    让文字不被选中,应该有一个css属性进行控制,结果网上查了下发现了-moz-user-select属性介绍 他在ie下也能选中文字,但是选中其他列表,不会选中文字,原来它是在不同div中,属于不同的范围,而同事是放在同一个table中,当然会选中。而在firefox下,文字不会被选中,查看googlecalender的css,原......
  • 主流的软件原型设计工具的介绍
    软件原型设计工具是用于创建应用程序或网站原型的工具,主要用于快速设计和验证用户界面和交互。以下我对是一些常用的软件原型设计工具的介绍AxureRP:AxureRP是一款功能强大的原型设计工具,可以创建高保真的交互式原型,支持复杂的交互和动画效果。Sketch:Sketch是一款流行的矢量绘......
  • Operating System(nanjin)-1 简单介绍
    介绍三个主要线索:硬件软件操作系统管道---将一个程序的输出作为另一个程序的输入程序角度的操作系统helloworldc文件gcc--verbosehello.c-static可以查看很多信息如include在哪里。我们只进行编译gcc-chello.c--得到hello.oobjdump-dhello.o查看......