Celery
1.1 Celery介绍
1、Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,
如果你的业务场景中需要用到异步任务,就可以考虑使用celery
2、你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,
你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情
3、Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis
2、Celery有以下优点
1、简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的
2、高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
3、快速:一个单进程的celery每分钟可处理上百万个任务
4、灵活: 几乎celery的各个组件都可以被扩展及自定制
3、Celery基本工作流程图
user:用户程序,用于告知celery去执行一个任务。
broker: 存放任务(依赖RabbitMQ或Redis,进行存储)
worker:执行任务
1.2 celery简单使用
参照博客 https://www.cnblogs.com/xiaonq/p/14097376.html
1、安装
1. 安装celery: pip3 install celery # ln -s /usr/local/python3/bin/celery /bin/celery
2. 安装redis
2 在根目录创建clery_task的包
3 在clery_task下面创建main.py 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | from celery import Celery app = Celery( 'mycelery' , broker = 'redis://127.0.0.1:6379/14' , #任务存放的地方 backend = 'redis://127.0.0.1:6379/15' ) #结果存放的地方 # @app.task 指定将这个函数的执行交给celery异步执行 @app .task def add(x,y): return x + y import os import sys # sys.path.append('..\\clery_task\\') CELEY_BASE_DIR = os.path.dirname(os.path.abspath(__file__)) @app .task def send(content,mailaddr): sys.path.insert( 0 ,os.path.join(CELEY_BASE_DIR, '../loonview_pro' )) #项目名字 from utils.rl_sms import mail mail(content,mailaddr) return '发送成功' |
4 启动celery
1 2 3 4 5 6 | # 单进程启动celery celery - A main worker - l INFO # celery 管理 celery multi start celery_text - A celery_text - l debug - - autoscale = 50 , 5 # celery并发数 最多50最少5个 ps auxww|grep "celery worker" | grep - v grep| awk '{print $2}' xargs kill - 9 #关闭所有celery进程 |
在 调用导包时调用可能会出错 可以尝试直接 不要把它标记为根源 导入celery时要在视图里面导包避免django环境加载问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)