python2 celery rabbitmq redis 基本demo搭建

一、准备环境

我这里 rabbitmq 和 redis 都是使用docker搭建的。

1、下载docker镜像

rabbitmq,management 版本是带有web管理界面的

docker image pull rabbitmq:3.7.7-management

redis,

docker image pull redis

2、把docker容器跑起来

docker container run -itd --name rabbitmq -p 5672:5672 -p 15672:15672 --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 2888deb59dfc

参数解释:

-p ,5672是rabbitmq的端口,15672是web界面的端口

--hostname,主机名,RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名

RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码

docker container run -itd --name redis -p 6379:6379 f7302e4ab3a8 --requirepass "f7302e4ab3a8"

这样,rabbitmq 和 redis 就跑起来了。

3、安装celery相关环境

创建python2虚拟环境,并启动

virtualenv env
source ./bin/activate

4、使用pip安装 redis、celery、rabbitmq包

pip install redis
pip install celery[redis,msgpack,gevent]

二、写一个最小的demo

创建一个目录,test_celery,下面所有文件都放置在这个目录下。

1、tasks.py

#coding=utf-8

from celery import Celery

app = Celery('celery_task_demo',broker='amqp://admin:admin@127.0.0.1:5672/my_vhost',backend='redis://:f7302e4ab3a8@127.0.0.1:6379/0')

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

2、app.py

#coding=utf-8

from tasks import myadd

if __name__ == "__main__":
    for i in range(0,16):
        result = myadd.delay(1,i)

3、运行app.py,将任务放在 rabbitmq 队列中,

python app.py

运行完成后,打开 rabbitmq 的界面,在 queue 选项卡中,可以看到我们往队列里放置了16个任务,如下:

4、运行worker,worker从 任务队列中取任务,运行任务并将结果存储在redis中。

下面命令中的 tasks 是指 tasks.py,

celery worker -A tasks -l info

查看redis数据,发现db0中存在16条结果。

 

再次查看 rabbitmq 的任务队列,发现 16 个任务已经被消费完了,如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值