美文网首页
消息队列:celery

消息队列:celery

作者: dex0423 | 来源:发表于2020-08-03 22:37 被阅读0次

1. 什么是 celery

  • Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统;
  • Celery 专注于实时处理的异步任务队列,同时也支持任务调度;
  • Celery 本身不含消息服务,它使用第三方消息服务来传递任务,目前 Celery 支持的消息服务有 RabbitMQ、Redis;
  • Celery 应用是线程安全的,所以多个不同配置、不同组件、不同任务的 应用可以在一个进程空间里共存;
Celery的架构组成

Celery的架构由三部分组成,消息中间件(message broker)任务执行单元(worker)任务执行结果存储(task result store) 组成。

消息中间件

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ,Redis,MongoDB(experimental),Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ

任务执行单元

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储

Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括 AMQP,redis,memcached,mongodb,SQLAlchemy, Django ORM,Apache Cassandra,IronCache 等。

这里我先不去看它是如何存储的,就先选用redis来存储任务执行结果。

因为涉及到消息中间件(在Celery帮助文档中称呼为中间人<broker>),为了更好的去理解文档中的例子,可以安装两个中间件,一个是RabbitMQ,一个redis。

根据 Celery的帮助文档 安装和设置RabbitMQ, 要使用 Celery,需要创建一个 RabbitMQ 用户、一个虚拟主机,并且允许这个用户访问这个虚拟主机。

使用场景

异步任务:将耗时操作任务提交给 Celery 去异步执行,比如发送短信/邮件、消息推送、音视频处理等等

定时任务:定时执行某件事情,比如每天数据统计

celery 特点

celery 在多目录结构中异步执行

from celery import Celery

cel = Celery('celery_demo',
             broker='redis://127.0.0.1:6379/1',
             backend='redis://127.0.0.1:6379/2',
             # 包含以下两个任务文件,去相应的py文件中找任务,对多个任务做分类
             include=['celery_tasks.task01',
                      'celery_tasks.task02'
                      ])

# 时区
cel.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
cel.conf.enable_utc = False

相关文章

  • 消息队列:celery

    1. 什么是 celery Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统; Celery 专注...

  • RabbitMQ与Celery

    RabbitMq与Celery应用示意图 1、RabbitMQ ((消息队列工具,在celery中扮演broker...

  • python-分布式任务队列

    celery 分布式任务队列工具 Celery是一个分布式任务队列工具,是一个异步的任务队列基于分布式消息传递 基...

  • Celery简介

    Celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。 Celery用于生产系统每天处理数以百万计...

  • 消息队列celery初探

    消息队列是网站架构中常用的组件,在异步任务、高并发等场景下使用广泛,celery是py下常用的消息队列,最近有一个...

  • Celery,Tornado,Supervisor构建和谐的分布

    Celery 分布式的任务队列 与rabbitmq消息队列的区别与联系: rabbitmq 调度的是消息,而Cel...

  • python爬虫之celery分布式任务(踩坑)

    一. celery和RabbitMQ简单介绍 Celery是一个基于Python开发的分布式异步消息队列,可以轻松...

  • Celery简单使用

    简介 Celery消息队列 消息队列选择一般选择以下两种 1、redis 这是比较轻量级的 2、rabbitmq ...

  • 爬虫架构|Celery+RabbitMQ快速入门(一)

    一、Celery和RabbitMQ简单介绍 Celery是一个基于Python开发的分布式异步消息队列,可以轻松实...

  • 使用Docke配置Rabbitmq及Celery的使用

    消息队列选择 这里对之前celery异步任务的使用做个总结,在生产环境使用celery时,最好选择rabbitmq...

网友评论

      本文标题:消息队列:celery

      本文链接:https://www.haomeiwen.com/subject/ymkbrktx.html