Celery - 基于Rabbitmq的异步任务队列
上篇介绍过Rabbitmq的基本原理,真正在工程和生产环境使用时,如果直接用pika来操作不免复杂,细节众多。今天要写一写是Celery,可以基于Rabbitmq轻松建立异步任务。
Celery自身无法独立运行,需要借助一个broker建立消息队列。broker的选择范围包括Rabbitmq和Redis等,下面以Rabbitmq为例,说明如何建立异步执行的任务。
from celery import Celery
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
安装完成Celery包之后,创建如上代码。通过app.task这个装饰器,就可以建立add这个异步任务。
>>> add.delay(1,1)
<asyncresult: d3046cf0-96d2-4274-a431-1fb3b0de6c41="">
通过调用delay方法,就可以执行异步任务,此时Celery充当了一个生产者,向Rabbitmq的消息队列中投递了一个消息,从管理后台可以看到消息详情。
通过如下命令启动消费者,就可以读取消息队列的消息,进而执行异步任务。
celery -A tasks worker --loglevel=info
这就是通过Celery借助Rabbitmq建立异步任务的整个过程。
</asyncresult:>
本文转载自异步社区
原文链接:
https://www.epubit.com/articleDetails?id=N34258318-b341-41ea-b362-1b476574f551 |
- 点赞
- 收藏
- 关注作者
评论(0)