Celery_理解到简单应用

Celery是干什么的?

Celery是用python开发的一个分布式任务调度模块。换言之,它是一个管理分布式任务队列的工具。
任务队列:队列中传递的是Task/Job信息
消息队列:队列中传递消息类数据
分布式:任务队列分布在多个机器、进程、线程
任务调度:

安装Celery

如果你的电脑已经安装了pip,直接命令行执行:pip install Celery
如何验证电脑是否安装了pip,在命令行执行pip,如果出现下图,表明已经安装了pip

执行pip install Celery命令之后,出现下图表明Celery安装成功。
在这里插入图片描述

Celery的组件

调用Celery API而产生任务Task,任务调度器Beat读取配置文件中的内容把需要执行的任务交给任务队列(Broker)处理,Broker(也称消息中间件)接受任务生产者发送过来的任务消息, 存进队列再按序分发给任务消费方Worker,Backend存储任务的执行结果和状态。

Producer(生产者):调用 Celery API 、函数而产生任务并交给任务队列处理的都是任务生产者
Beat(任务调度器): Beat 进程会读取配置文件的内容, 周期性的将配置中到期需要执行的任务发送给任务队列.
Broker:中间人,接收生产者发来的消息即Task,将任务存入队列。
Worker:执行任务的单元,它实时监控消息队列,如果有任务就获取任务并执行它
Backend : 任务处理完成之后保存状态信息和结果, 以供查询, 可以是AMQP, Redis, memcached, MongoDB, SQLAlchemy. Django ORM, Apache Cassandra等。

图片来自 https://foofish.net/images/584bbf78e1783.png

Celery的应用

celery是易于集成Django, Pylons and Flask,使用 django-celery, celery-pylons and Flask-Celery 附加包即可
task.py

from celery import Celery # 导入Celery类
celery = Celery('task', broker='redis://localhost:6379/0')   # 创建Celery对象cel,中间件为redis

@celery.task
def send_mail(mail):
    print('sending mail to %s...' % mail)
    time.sleep(2.0)
    print('mail sent.')

发送任务给woker

from tasks import sendmail
sendmail.delay('[email protected]')

启动Celery执行任务

Celery -A task worker --loglevel=info # 启动的是Worker

猜你喜欢

转载自blog.csdn.net/weixin_38851970/article/details/107051231
今日推荐