celery+Rabbit MQ简单的Demo
介绍
一个简单的celery + rabbitmq 的搭建例子,用于记录
Celery
异步处理框架, 安装命令
pip install celery
RabbitMQ
消息中间件,用来做队列
安装配置参考 https://juejin.cn/post/6993229378729541646
项目目录结构

先写celery_app文件夹里面的内容
celery_app/init.py
引入配置文件,并指定用什么做队列
from celery import Celery
# app = Celery("celery_app", backend='amqp')
app = Celery("celery_app", backend='amqp')
app.config_from_object("celery_app.celeryconfig")
celery_app/celeryconfig.py
celery的配置文件
RABBIT_MQ = {
'HOST': '192.168.254.128',
'PORT': 5672,
'USER': 'test',
'PASSWORD': '123456'
}
BROKER_URL = 'amqp://%s:%s@%s:%s/myvhost' % (RABBIT_MQ['USER'], RABBIT_MQ['PASSWORD'], RABBIT_MQ['HOST'], RABBIT_MQ['PORT'])
CELERYD_LOG_FORMAT = '[%(asctime)s] [%(levelname)s] %(message)s'
CELERY_TIMEZONE = 'Asia/Shanghai' # 时区
CELERY_IMPORTS = ( # 指定需要导入的任务模块
'celery_app.task1', # task1和task2是模块名称
'celery_app.task2',
)
# 指定队列
CELERY_ROUTES={
"add":{"queue":"add",},
"multiply":{"queue":"mul"},
}
# CELERY_ROUTES = {
# 'add': {'queue': 'add', 'routing_key': 'key1'},
# 'multiply': {'queue': 'mul', 'routing_key': 'key2'},
# }
引入两个异步任务
celery_app/task1.py
import time
from celery_app import app
@app.task(queue="add") # 指定队列
def add(x,y):
time.sleep(2)
return x + y
celery_app/task2.py
import time
from celery_app import app
@app.task(queue="multiply")
def multiply(x, y):
time.sleep(2)
return x * y
最后,最外层的测试,将任务push进队列中去执行异步的任务
api.py
from celery_app.task1 import add
from celery_app.task2 import multiply
print("start...")
result = add.delay(1,2)
# result2 = multiply.delay(1,2)
print('异步。。',result, result2)
# print('异步。。',result)
print("end...")
启动
按照文章上面的步骤,安装好 rabbitmq 之后,启动 rabbitmq
service rabbitmq-server start # 启动服务
service rabbitmq-server stop # 停止服务
service rabbitmq-server restart # 重启服务

然后启动 celery
celery -A celery_app worker --loglevel=info -Q add # celery_app 是celery指定的app名字,-l 是输出日志, -q 是指定队列

测试运行celery + rabbitmq

完。
celery+Rabbit MQ简单的Demo的更多相关文章
- celery+Rabbit MQ实战记录
基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...
- celery rabbit mq 详解
Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...
- Rabbit mq 简单应用
参考:http://rabbitmq.mr-ping.com/AMQP/AMQP_0-9-1_Model_Explained.html 简答模式(exchange不工作) import pika # ...
- 分布式消息中间件Rabbit Mq的了解与使用
MQ(消息队列)作为现代比较流行的技术,在互联网应用平台中作为中间件,主要解决了应用解耦.异步通信.流量削锋.服务总线等问题,为实现高并发.高可用.高伸缩的企业应用提供了条件. 目前市面比较流行的消息 ...
- Spring Boot:使用Rabbit MQ消息队列
综合概述 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以 ...
- Rabbit MQ 学习参考
网上的教程虽然多,但是提供demo的比较少,或者没有详细的说明,因此,本人就照着网上的教程做了几个demo,并把代码托管在码云,供有需要的参考. 项目地址:https://gitee.com/dhcl ...
- 使用Rabbit MQ消息队列
使用Rabbit MQ消息队列 综合概述 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息 ...
- 使用rabbit mq.模拟dubbo,使MQ异步调用代码写起来像是同步方法.
最近在改造老系统,遇到了需要使用rabbitMq的场景.在以前使用的过程中需要在发送端和消费端各种配置,感觉比较麻烦,然后突然想到了dubbo中@Reference注解的形式,可不可以做一个类似的架子 ...
- Rabbit MQ 基础入门
Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
随机推荐
- RecyclerView显示列表
本次要讲的内容是利用RecyclerView显示Users列表的信息,如下图所示. 首先我们来创建模型User.java package com.example.mytest.User; import ...
- 后台运行&和nohup使用
这里首先先介绍一下 ctrl+z bg fg jobs 命令 下面为了观察效果,test1.sh脚本不停的输出hello ctrl + z ,会使一个正在运行的进程挂起(暂停)到后台,而且执行jobs ...
- Python基础教程:字典
字典 = {'键1':'值1','键2':'值2','键3':'值3',...} animal_dict = {'Cow':'Milk','Chicken':'egg'} 字典由键值对构成,这种键值对 ...
- Spring--bean管理(easy)
bean作用范围 利用同一个BookDao设置出来两个不同的对象,得到相同的地址: (默认为单例,即表现为同一个地址) 要是想要得到不同的地址,就需要我们在接口实现类的上面加上这样一个注解:(双例) ...
- 声网 X 在线自习室 同学陪伴、老师监督的在线自习是如何火出圈的?
实时互联网像触角一样,通过情景的共享延伸开来,链接着我们彼此的线下.线上生活,形成一张不可分割的网络.随着社交直播.在线教育.视频会议成为大众生活不可或缺的一部分的同时,智能手表.智能作业灯.视频双录 ...
- day06-静态资源访问&Rest风格
SpringBoot之静态资源访问&REST风格请求 1.SpringBoot静态资源访问 1.1基本介绍 只要静态资源是放在类路径下的:/static./public./resources. ...
- 集成-AgileConfig基于.NetCore的一个轻量级配置中心
微服务确实是行业的一个趋势,我自己也在把一些项目往微服务架构迁移.玩微服务架构配置中心是一个绕不过去的东西,有很多大牌的可以选,比如spring-cloud-config,apoll,disconf等 ...
- Rancher 系列文章-Rancher 升级
概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本. 前几天发现 Ran ...
- keyclaok~keycloak存到cookie中的值和session_state
keycloak存到cookie中的值 AUTH_SESSION_ID KEYCLOAK_IDENTITY KEYCLOAK_SESSION AUTH_SESSION_ID 用户的当前session_ ...
- 一些随笔 No.1
耦合 耦合是一个设计与逻辑上的问题 例如一个软件有20个功能,删除任意一个功能对别的19个功能不造成影响,就是低耦合 如果删除一个功能后其他功能会失去完整性,那么就是高耦合 Difference be ...