Django Celery,Celery是一个高
Django Celery,Celery是一个高
Celery 用途
Celery是一个高效的异步任务队列/基于分布式消息传递的作业队列,可以轻松帮我们在Django项目中设置执行异步和周期性任务。
Celery是一个高效的基于分布式消息传递的作业队列。它主要通过消息(messages)传递任务,通常使用一个叫Broker(中间人)来协调client(任务的发出者)和worker(任务的处理者)。 clients发出消息到队列中,broker将队列中的信息派发给 Celery worker来处理。Celery本身不提供消息服务,它支持的消息服务(Broker)有RabbitMQ和Redis。
消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成。
Celery 架构
celery 架构
参考 【https://www.cnblogs.com/zx0524/p/17347566.html】
消息中间件
celery本身是不提供服务的,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ、Redis。
任务执行单元
Worker是celery提供的任务执行单元,worker并发的运行在分布式的系统节点上
任务结果存储
Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等。
完整架构图
参考【https://www.jianshu.com/p/5df828670971】
Celery Beat : 任务调度器. Beat 进程会读取配置文件的内容, 周期性的将配置中到期需要执行的任务发送给任务队列.
Celery Worker : 执行任务的消费者, 通常会在多台服务器运行多个消费者, 提高运行效率.
Broker : 消息代理, 队列本身. 也称为消息中间件. 接受任务生产者发送过来的任务消息, 存进队列再按序分发给任务消费方(通常是消息队列或者数据库).
Producer : 任务生产者. 调用 Celery API , 函数或者装饰器, 而产生任务并交给任务队列处理的都是任务生产者.
Result Backend : 任务处理完成之后保存状态信息和结果, 以供查询.
配置
celery.py中 可以设置 #任务结果保存时间
# Optional configuration, see the application user guide. app.conf.update( result_expires=3600, #任务结果保存时间 )
调用任务
如果想看任务结果的话,需要在调用 任务时 赋值个变量,例如
>>> result = add.delay(4, 4)
如果想查看任务是否完成,可调用下面命令,返回布尔值
>>> result.ready()
想拿到任务执行结果,调用下面命令(注意:想拿到结果首先得配置接收任务的中间件,否则会报错)
result.get()
更多知识
这个官方文档详细演示了一个入门的例子《Using Celery with Django》
https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html
《Celery 中文手册》
https://www.celerycn.io/
相关内容
- Django配置和基础,T代表模板(Temp
- Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操
- Windows服务器,通过Nginx部署VUE+Django前后端分离项目,本
- 使用python311+pycharm社区版+MySQL80,使用django连接MySQL,
- Django学习(二) 之 模板的使用,昨天下午去姐姐家,我
- Django学习(一) 之 环境搭建,可能会有人说,之前不
- Django笔记四十三之使用uWSGI部署Django系统,处理流程是
- Django笔记四十二之model使用validator验证器,首先,这是
- Django笔记四十一之Django中使用es,这一篇笔记介绍一下
- Django框架系列目录,
评论关闭