Celery - 基于Rabbitmq的异步任务队列

举报
竹叶青 发表于 2019/10/15 12:42:46 2019/10/15
【摘要】 上篇介绍过Rabbitmq的基本原理,真正在工程和生产环境使用时,如果直接用pika来操作不免复杂,细节众多。今天要写一写是Celery,可以基于Rabbitmq轻松建立异步任务。 Celery自身无法独立运行,需要借助一个broker建立消息队列。broker的选择范围包括Rabbitmq和Redis等,下面以Rabbitmq为例,说明如何建立异步执行的任务。 from celery im...

top0.97ac691.png

上篇介绍过Rabbitmq的基本原理,真正在工程和生产环境使用时,如果直接用pika来操作不免复杂,细节众多。今天要写一写是Celery,可以基于Rabbitmq轻松建立异步任务。

 

Celery自身无法独立运行,需要借助一个broker建立消息队列。broker的选择范围包括RabbitmqRedis等,下面以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&#45;96d2&#45;4274&#45;a431&#45;1fb3b0de6c41="">

通过调用delay方法,就可以执行异步任务,此时Celery充当了一个生产者,向Rabbitmq的消息队列中投递了一个消息,从管理后台可以看到消息详情。

 

通过如下命令启动消费者,就可以读取消息队列的消息,进而执行异步任务。

 

celery -A tasks worker --loglevel=info

这就是通过Celery借助Rabbitmq建立异步任务的整个过程。

 

</asyncresult:>

本文转载自异步社区

原文链接:

https://www.epubit.com/articleDetails?id=N34258318-b341-41ea-b362-1b476574f551


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。