【星海出品】rabbitMQ - 叁 应用篇

rabbitMQ 的基础知识这里就不阐述了,可以参看我早年写的文章 -> rabbitMQ 入门
https://blog.csdn.net/weixin_41997073/article/details/118724779

Celery 官网:http://www.celeryproject.org/
Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html
Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/

celery 还有定时运行,redis 缓冲使用等高级特性,可以参看 Celery的官网进行研究。

这里讲些 rabbitMQ 如何与程序嵌入,使用的是 django 的基础框架

django 使用celery 插件,在配置文件配置,并启动 celery 就可以与 rabbitMQ 进行交互
配置如下

INSTALLED_APPS = ['rest_framework',
]
from celery import Celery
from kombu import QueueCELERY_WORKER_POOL = 'prefork'  # 禁用gevent池
CELERY_BROKER_URL = 'amqp://test:test_password@localhost:5672/test_vhost'
CELERY_RESULT_BACKEND = 'django-db'  # 使用数据库存储结果
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ENABLE_UTC = False
CELERY_TASK_TRACK_STARTED = True
CELERY_RESULT_EXPIRES = 3600  # 任务结果保存1小时CELERY_WORKER_CONCURRENCY = 4
# [ IO 密集型, 每个worker进程可以预取 并发数 × 预乘数 个任务到内存中 ]
# 设置为1000,表示每个worker进程处理1000个任务后会自动重启
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
CELERY_WORKER_MAX_TASKS_PER_CHILD = 1000
CELERY_TASK_ACKS_LATE = True# Celery 队列配置
CELERY_TASK_QUEUES = (Queue('default', routing_key='task.default'),Queue('high_priority', routing_key='task.high_priority'),Queue('celery', routing_key='task.celery'),
)# Celery 路由配置
CELERY_TASK_ROUTES = {'metadata.tasks.process_rabbitmq_message': {'queue': 'high_priority','routing_key': 'task.high_priority'},'metadata.tasks.async_update_record': {'queue': 'default','routing_key': 'task.default'},
}# CELERY_TASK_QUEUES = (
#     Queue('high_priority', Exchange('high_priority'), routing_key='high_priority'),
#     Queue('default', Exchange('default'), routing_key='default'),
#     Queue('low_priority', Exchange('low_priority'), routing_key='low_priority'),
# )MONKEY_PATCH_SETTINGS = {'subprocess': False,'thread': False,  # 禁用线程补丁
}

注意:
django创建的数据模型需要手动迁移,还有rabbitMQ 的虚拟主机和队列也需要进行验证,确保可用。

在 django 的主入口 url 目录中建立celery 脚本 ,并在该目录的初始化 init 配置文件中添加 celery 信息
就可以在 django 的 manage.py 平级目录使用 celery 进行启动与 rabbitMQ 的交互 。

celery -A djangoProjectMetaDataManagement worker --loglevel=info -Q high_priority,defaultcelery -A djangoProjectMetaDataManagement.celery worker --loglevel=info为了安装考虑看情况也可以创建一个独立的用户运行celery
# 创建专用用户
useradd celeryuser# 使用非 root 用户运行
celery -A djangoProjectMetaDataManagement.celery worker --loglevel=info --uid=celeryuser --gid=celeryuser

celery.py

import os
from celery import Celery
from kombu import QueueCELERY_BROKER_URL = 'amqp://test:test_password@localhost/test_vhost'
CELERY_RESULT_BACKEND = Noneos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProjectMetaDataManagement.settings')app = Celery('djangoProjectMetaDataManagement')
#app.config_from_object('django.conf:settings', namespace='CELERY')# 使用 Django 的设置文件配置 Celery
app.config_from_object('django.conf:settings', namespace='CELERY')app.conf.update(worker_prefetch_multiplier=1,  # 每个Worker进程每次只预取1个任务worker_max_tasks_per_child=100, # 可选:限制每个Worker进程处理的任务数后重启
)app.conf.task_queues = (Queue('default'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96683.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 每个chartArea显示最小值、平均值、最大值

private void AddStatisticsAnnotations(ChartArea chartArea, int channelIndex) {RemoveExistingAnnotations(channelIndex);// 获取ChartArea的相对坐标(百分比)float chartAreaX chartArea.Position.X; // X坐标(百分比)floa…

打破“不可能三角”:WALL-OSS开源,具身智能迎来“安卓时刻”?

目录 引言:当“大脑”学会思考,机器人才能走出实验室 一、具身智能的“不可能三角”:机器人“大脑”的核心困境 二、WALL-OSS的四把重锤:如何系统性地破解难题? 2.1 第一锤:更聪明的“大脑”架构 —— …

SigNoz分布式追踪新体验:cpolar实现远程微服务监控

前言 SigNoz是一款开源的应用性能监控工具,专为微服务架构设计,集成了指标、追踪和日志分析功能。它能够全面监控分布式系统的性能,帮助开发团队快速定位问题根源。SigNoz支持OpenTelemetry协议,可以无缝集成各种编程语言和框架&…

python编程原子化多智能体综合编程应用(下)

上述代码实现了基于Mesa框架的诊断智能体类,包含以下核心功能: 模块化设计:通过类属性分离数据与行为,支持不同专科智能体的扩展 状态管理:实现idle/processing/error等状态转换,支持任务调度 诊断推理:集成机器学习模型,支持症状提取与多分类诊断 错误处理:包含模型加…

QT M/V架构开发实战:QSqlQueryModel/ QSqlTableModel/ QSqlRelationalTableModel介绍

目录[TOC](目录)前言一、初步介绍二、QSqlQueryModel1.基础定位2.特点3.核心接口4.典型用法5.优缺点三、QSqlTableModel1.基础定位2.特点3.核心接口4.典型用法5.优缺点四、QSqlRelationalTableModel1.基础定位2.特点3.核心接口4.典型用法 (示例:employees表有 dept_…

Terraform 从入门到实战:历史、原理、功能与阿里云/Azure 上手指南

前言:在云时代,企业的IT基础设施早已从“几台服务器”演变为“横跨多云的复杂网络、计算、存储集群”。但随之而来的,是管理复杂度的爆炸式增长:开发环境和生产环境不一致、手动配置容易出错、多云平台操作方式各异、资源变更难以…

【计算机网络 | 第10篇】信道复用技术

文章目录信道复用技术:高效利用通信资源的智慧方案一、频分复用(FDM):按频率划分的并行通道二、时分复用(TDM):按时间分割的轮流占用三、统计时分复用(STDM):…

安卓13_ROM修改定制化-----禁用 Android 导航按键的几种操作

Android 设备的导航按键通常包括后退键(Back)、主页键(Home)和最近键(Recents),这些按键位于屏幕底部或设备实体区域。禁用导航按键可以帮助在特定应用场景(如信息亭模式或儿童锁模式)中限制用户操作。安卓设备上禁用底部虚拟导航键(返回、主页、多任务键)有多种方法…

通过S参数测量评估电感阻抗:第2部分

S21双端口分流和双端口串联方法 T这是两篇文章中的第二篇,专门讨论使用网络分析仪测量 S 参数进行电感阻抗评估主题。上一篇文章 [1] 描述了阻抗测量和计算S11使用单端口分流器、双端口分流器和双端口串联方法的参数。本文专门介绍阻抗测量和计算S21使用双端口分流…

[deepseek] C语言头文件与汇编实现讨论

我想询问一种代码实现方式,使用C语言,例如main.c包含了自己编写的库文件abc.h,我想问的是:一、abc.h中是否可以有实现函数的代码;二、abc.h中的函数是否可以在另一个后缀为asm的汇编文件中实现?非常好&…

`.cursorrules` 与 `.cursorcontext`:Cursor AI 编程助手时代下的“双轨配置”指南

.cursorrules 与 .cursorcontext:AI 编程助手时代下的“双轨配置”指南关键词:Cursor、AI 编程、上下文管理、开发规范、技术治理 适合读者:前端 / 全栈工程师、技术负责人、AI 辅助编程实践者1. 为什么又多了两个“点”文件? 随着…

XR 和 AI 在 Siggraph 2025 上主导图形的未来,获取gltf/glb格式

Meta 的 Boba 和 Tiramisu XR 耳机(来源:Meta) Siggraph 2025 今年重返不列颠哥伦比亚省温哥华,庆祝《玩具总动员》诞生 30 周年和视频游戏实时渲染 20 周年。虽然 Siggraph 需要时间来欣赏过去,但它更多的是展望未来…

在 Ubuntu 22.04 系统(CUDA 12.9)中,通过本地DEB 包安装 cuDNN 9.13.0 的方法步骤

以下是在 Ubuntu 22.04 系统(CUDA 12.9)中,通过本地单个 DEB 包安装 cuDNN 9.13.0 的完整步骤,核心包含 GPG 密钥配置与包安装验证,确保每一步可执行。 一、安装前核心检查(必做) 确保系统已满足基础条件,避免安装失败: 验证 CUDA 版本:打开终端执行命令,确认当前…

Element 中 upload 编辑回显文件上传信息技巧

文章目录需求分析需求 upload 编辑状态下回显已上传的文件信息 分析 添加fileList <el-uploadstyle"width: 100%"ref"uploadRef"class"upload-demo"action"/prod-api/jc/files/upload"multiple:limit"1":on-success&q…

php简介(第一天打卡)

一.php简介 1.什么是php&#xff1f; 1.1 Php 为什么叫这个名字&#xff1f; Personal home page 最开始用于个人主页建站 后更名为 hypertext preprocessor 超文本预处理 1.2 php是属于哪种语言&#xff1f; 后端语言 &#xff08;从开发角度分类&#xff09; 服务端语言…

Android 车联网——车载仪表屏开发(二十六)

通常汽车启动后需要快速显示仪表,而车载娱乐系统所在的Android系统,启动是比较耗时的,所以通常仪表系统会做在一个小型轻量化的系统内,从而达到快速启动的效果,最终实现汽车一发动,就立刻能显示出仪表必须显示的各项内容。 一、仪表功能介绍 1、仪表的发展 机械仪表:通…

RL--RLHF--PPO--GRPO--DPO速通

参考视频&#xff1a;1小时速通 - 从强化学习到RLHF - 简介_哔哩哔哩_bilibili 强化学习RL RL的核心就是智能体Agent 与 环境Environment的交互。 状态&#xff08;State&#xff0c;s&#xff09;&#xff1a;环境在某一时刻的描述&#xff0c;表示当前情境。动作&#xff0…

hardhat 项目目录介绍

使用 npx hardhat init初始化一个 Hardhat 项目后&#xff0c;会生成一个结构清晰的目录&#xff0c;每个部分都有其特定用途。下面是一个表格汇总了主要的目录和文件及其作用&#xff0c;方便你快速了解&#xff1a;contracts/​​存放项目的 ​​Solidity 智能合约源代码​​…

9.11网编项目——UDP网络聊天

服务器端#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <errno.h> #include <unistd.h> #include <25061head.h> #d…

第3节-使用表格数据-数据库设计

摘要: 在本教程中&#xff0c;你将学习如何为自己的应用程序设计 PostgreSQL 数据库。 业务需求 我们将为一个简单的库存管理系统设计数据库。 让我们从业务需求开始&#xff1a; “我们的库存管理系统使仓库用户能够高效管理多个仓库的库存。” 它简化了产品管理&#xff0c;使…