Celery与RabbitMQ、Redis

本文介绍了如何使用RabbitMQ和Redis作为中间人与Celery集成。首先讲解了RabbitMQ的安装和启动,强调了正确停止RabbitMQ的方式。接着,通过Celery官网教程创建了tasks.py来执行异步任务。Celery的broker和backend选择中,推荐了RabbitMQ和Redis。最后,文章展示了如何配置和启动Celery以使用Redis。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用RabbitMQ结合Celery

RabbitMQ 是默认的中间人,首先安装RabiitMQ

apt-get install rabbitmq
# 添加用户
rabbitmqctl add_user my_user my_password
# 添加虚拟主机
rabbitmqctl add_vhost myvhost
# 为用户赋予相应虚拟主机权限
rabbitmqctl set_permissions -p myvhost my_user ".*" ".*" ".*"

启动服务器

rabbitmq-server

也可以添加-detached属性来后台运行

rabbitmq-server -detached

不要kill停止RabbitMQ,使用rabbitmqctl命令

rabbitmqctl stop

启动服务器也可以使用Celery来启动。本实例中使用该方式启动
参考Celery官网
1. 创建tasks.py

from celery import Celery
app = Celery('tasks', broker='amqp://my_user:my_password@localhost/myvhost', backend='amqp')

@app.task
def add(x,y):
    return x + y

每当应用程序调用celery的异步任务的时候,会向broker传递消息,而后celery的worker将会取到消息,进行执行。celery实现了一个backend,用于存储消息及celery执行的消息和结果。对于brokers,官方推荐rabbitmq和redis,至于backend一般是数据库,也可以使用rabbitmq和redis

使用Celery参数启动程序

$ celery -A tasks worker --loglevel=info

进入python交互

from tasks import add
result = add.delay(3, 5)
result
输出:<AsyncResult: bf7e254a-3bf7-445c-83dc-a688fef1082c>

result.ready()
输出:True

result.get()
输出:8


使用Redis结合Celery

安装redis python驱动

pip install redis

编写tasks.py

from celery import Celery

brokers='redis://127.0.0.1:6379/5'
backend='redis://127.0.0.1:6379/6'

app = Celery('tasks',broker=brokers,backend=backend)

@app.task
def add(x, y):
    return x + y

启动

celery -A tasks worker --loglevel=info

python交互环境

from tasks import add
result = add.delay(2, 3)
result.ready()
输出:True
result.get()
输出:5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值