celery编程--supervisor监控

Python异步任务队列:Celery与Flower监控的入门与实践指南 在Web开发与分布式系统中,异步任务处理是提升应用性能和响应能力的关键技术。其核心原理是将耗时操作从主请求流程中解耦,通过消息队列进行任务调度,由后台Worker进程异步执行,从而避免阻塞并提高系统吞吐量。这项技术的核心价值在于优化资源利用、改善用户体验,并支撑高并发场景。典型的应用场景包括用户注册后的邮件发送、报表生成、图像处理及数据清洗等后台作业。本文聚焦于Python生态中广泛使用的Celery分布式任务队列及其配套的Flower监控工具,通过一个模拟发送欢迎邮件的完整示例,详细演示了从环境搭建、任务 阅读详情

一、celery跑起来!

组件安装

主角 : celery

配角 : redis 或者 rabbitmq

linux:

pip install reids celery

windows

pip install redis eventlet

注意 :

windows上使用celery,bug很多,慎用!

启动celery时,记得后面加上 -P eventlet

比如 : celery worker -A app1 -c 16 -P eventlet

架构图:如下所示

  • user 就是用户的控制代码。(比如下面你的app.py)

  • borker 是中间件,可以使用 redis 或者 rabbitmq.

  • workers 就是 执行具体任务的代码。 (比如下面的 tasks.py)

  • backend 是结果存储的地方, 支持很多存储方式,常见的是 支持sqlalchemy的数据库、redis等。

在这里插入图片描述

使用步骤

1 配置broker 和 backend

broker只支持 redis, rabbitmq。

broker = 'redis://localhost:6379/1'

backend 可以使用很多,比如支持sqlalchemy的数据库,redis也行。

backend = 'redis://localhost:6379/2'

result_backend = 'db+sqlite:///results.sqlite'
result_backend = 'db+mysql://scott:tiger@localhost/foo'
result_backend = 'db+postgresql://scott:tiger@localhost/mydatabase'
result_backend = 'db+oracle://scott:tiger@127.0.0.1:1521/sidname'

2 编写worker代码

tasks.py

import time
from celery import Celery

database = 'redis'
ip = '192.168.92.128'
port = '6379'
uri = f"{database}://{ip}:{port}/" + '{}'

# redis 2号 数据库是 接受任务队列
broker = uri.format(2)
# redis 3号 数据库是 存储执行结果队列
backend = uri.format(3)

app = Celery('my_task', broker=broker, backend=backend)


@app.task
def add(x, y):
    print('enter add, task is running ...')
    time.sleep(3)
    return x + y

3 启动worker

# 要在命令行中启动workers
# win上的命令是 : celery worker -A tasks -P eventlet -l INFO -c 20
# Linux或者mac : celery worker -A tasks -l INFO -c 20

-A : 指定worker工作的脚本
-l : 日志级别,默认是警告。
-c : 控制worker的数量。

4 编写应用代码

app.py

from tasks import add
import time

if __name__ == '__main__':
    stime = time.time()

    # 实际上这样调用只是把任务发给了worker,参见redis/2
    # 后续怎么执行,这个代码里根本不管。由celery接管,异步执行。
    for i in range(100):
        res = add.delay(i, i + 3)
        print(res)

    print(time.time() - stime)

二、使用配置文件

代码结构如下:

在这里插入图片描述

步骤

建立应用模块app1

建立配置文件

# config.py

socket = '192.168.92.129:6379'

BROKER_URL = f'redis://{socket}/2'
CELERY_RESULT_BACKEND = f'redis://{socket}/3'

CELERY_TIMEZONE = 'Asia/Shanghai'

CELERY_IMPORTS = (
    'app1.task1',
    'app1.task2',
)

初始化celery app

# __init__.py

rom celery import Celery

app = Celery('app1')

app.config_from_object('app1.config')

编写功能代码

# task1.py


from app1 import app


@app.task
def t1(x):
    a, b, n = 0, 1, 0
    while n < x:
        a, b = b, a + b
        n += 1
    return b

测试

# main.py

from app1.task1 import t1
from app1.task2 import t2

for i in range(1, 2000):
    a = t1.delay(i + 30000)
    b = t2.delay(i + 30000)
    print(a, b)

启动celery命令

# windows上
celery worker -A app1 -c 16 -P eventlet

# linux,mac……
celery worker -A app1 -c 16

三、定时任务

修改配置文件

  • from celery.schedules import crontab
  • CELERY_TIMEZONE = ‘Asia/Shanghai’
  • CELERYBEAT_SCHEDULE = {}
# config.py

from datetime import timedelta
from celery.schedules import crontab

redis_url = 'localhost:6379'

BROKER_URL = f'redis://{redis_url}/2'
CELERY_RESULT_BACKEND = f'redis://{redis_url}/3'

CELERY_TIMEZONE = 'Asia/Shanghai'

CELERY_IMPORTS = (
    'app1.task1',
    'app1.task2',
)

# 第一个是每隔一段时间执行,
# 第二个是在每天的几点几分执行。
CELERYBEAT_SCHEDULE = {
    'task1': {
        'task': 'app1.task1.t1',
        'schedule': timedelta(seconds=10),
        'args': (55555,)
    },
    'task2': {
        'task': 'app1.task2.t2',
        'schedule': crontab(hour=18, minute=8),
        'args': (66666,)
    }
}

celery 启动命令

其实是使用celery beat命令,此命令用定时执行

celery  worker -A app1 -B -c 20

四、flower监控中间件

使用 pip install flower 安装该模块。

简单监控

celery flower --broker=redis://localhost:6379/2 --address=0.0.0.0 --port=5555

然后浏览器打开 http://localhost:5555 即可。

五、supervisor管理进程

这是一个用于进程管理的工具,功能极其强大!

结构和功能

由几个组件构成

  • supervisord 启动supervisor 服务
  • supervisorctl 客户端工具

步骤

编写配置文件

样例:

# sv.conf

# 开启web监控,可以通过web控制进程。
[inet_http_server] 
port=9001
username=user      
password=123

# 建立一个监控进程,名字叫 simple_celery_test
[program:simple_celery_test]
priority=999
directory=/home/blueky/SourceCode/celery_code/celery001
stdout_logfile=/home/blueky/SourceCode/celery_code/celery001/log/out.log
stderr_logfile=/home/blueky/SourceCode/celery_code/celery001/log/err.log
command=celery worker -A tasks -c 10

启动supervisord

supervisord -c sv.conf

web端控制

浏览器打开 http://localhost:9001 即可。

修改配置文件

  1. 修改配置文件

  2. 终端输入 supervisorctl

  3. 在交互式命令行中输入 update即可

Python分布式任务队列Celery与Flower监控实战指南 在Web开发与后端工程中,异步编程是提升系统响应能力和吞吐量的核心技术。其核心原理是将耗时操作从主请求流程中解耦,通过消息队列实现任务的异步调度与执行,从而避免阻塞、优化资源利用。这一技术价值在于构建高并发、可扩展的分布式系统,广泛应用于数据处理、邮件发送、报表生成等场景。Celery作为Python生态中最成熟的分布式任务队列框架,结合Redis或RabbitMQ等消息中间件,提供了强大的异步任务处理能力。而Flower作为其官方监控工具,为任务执行状态、Worker节点健康度及队列情况提供了可视化仪表盘 阅读详情

相关推荐

Supervisor进程守护:从原理到实战,保障服务高可用的运维利器

进程守护是保障后台服务持续稳定运行的核心技术,其核心原理在于通过一个守护进程监控目标进程的生命周期,一旦发现异常退出便自动重启,从而构建服务高可用的基础防线。这项技术的核心价值在于自动化故障恢复,极大减少了人工干预,是运维自动化的基石。其典型应用场景包括Web服务器、消息队列消费者、定时任务等需要7x24小时不间断运行的服务。本文将以业界广泛使用的Supervisor工具为例,深入解析其C/S架构、进程监控循环与自动重启机制,并详细演示在生产环境中如何配置与管理进程守护,涵盖从基础安装、日志管理到Docke

weixin_30321449的博客 317

Celery 使用supervisor 配置后台运行

1. 安装 supervisor apt install supervisor 或 pip3 install supervisor 2. 进入/etc/supervisor/conf.d下,新建celery.conf文件,写入如下内容: [program:celery] command=/usr/bin/celery -A celery_tasks worker -l info # 运行的命令 directory=/home/xxx/xxx # 命令执行的目录

s_daqing的博客 862

JavaScript性能优化:全链路性能优化策略

JavaScript性能优化是提升Web应用质量的核心要素,直接影响用户体验与业务成果。研究表明,页面加载延迟1秒可能导致转化率下降7%。高效的JavaScript执行能减少主线程阻塞,避免动画卡顿或操作延迟,尤其在移动端低性能设备上更为关键。优化内存管理与减少冗余计算可降低浏览器资源消耗,防止因内存泄漏导致的崩溃,提升应用稳定性。在竞争激烈的互联网环境中,性能优势已成为产品差异化的关键因素,直接影响用户留存与商业价值。因此,性能优化应作为开发全周期的核心实践,而非事后补救措施。

weixin_49707375的博客 1274

Linux下安装tomcat8启动报错

原生安装tomcat8之后,启动 ./startup.sh 报错 /usr/local/tomcat/tomcat8/logs/catalina.out: 没有那个文件或目录 检查发现没有配置日志输出文件路径: mkdir /usr/local/tomcat8/logs 正常启动:

dachui的博客 655

解决屏幕不亮难题:慷智SerDes DE信号极性配置避坑指南

本文深入探讨了基于慷智AIM95x系列SerDes芯片的嵌入式显示系统开发中,因DE信号极性配置不匹配导致屏幕不亮的典型故障。文章详细解析了DE信号的核心作用与极性定义,提供了慷智SerDes芯片中DE极性寄存器的具体配置方法与调试记录,并给出了从隔离问题、对比时序到波形验证的系统性排查流程,帮助工程师快速定位并解决此类隐蔽问题。

weixin_29185493的博客 145

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

努力让自己发光,对的人才能迎着光而来 14万+

Django+celery使用supervisor进行进程守护

1.库版本 supervisor 4.2.5 django-celery-beat 2.5.0 django-celery-results 2.5.1 Django 4.2.6 环境: Linux项目路径:/opt/new/new_project 2.制作软连接已知,Python的安装目录是 /usr/local/python3,其下有 bin/include/lib和share四个目录,其...

唯有热爱 可抵万难 537

【YOLO26实战全攻略】10——YOLO26+SAM3实战:从检测到像素级分割的全流程指南(含PCB缺陷检测案例)

本文聚焦YOLO26与SAM3的融合应用,系统讲解“检测+分割”的三种核心模式:YOLO26原生分割(轻量高效)、YOLO26检测+SAM3精细分割(精度极致)、SAM3自动标注+YOLO26蒸馏(低成本冷启动)。从环境搭建、数据集准备、模型训练、性能优化到边缘部署,提供 step-by-step 实操教程,配套完整可运行代码与执行结果。结合虚拟PCB缺陷检测案例,展示像素级缺陷识别与几何参数测量的工业级应用流程。本文兼顾新手入门与进阶提升,注重实用价值,读者可直接参考搭建自己的分割系统。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 627

python celery 使用及后台运行(supervisor)

Celery是Python开发的分布式任务调度模块。 一、安装: 1.安装celery: pip install celery 2.安装redis: sudo apt-get install redis-server 3.安装pyredis: pip install redis 二、使用: 1.新建一个py文件task.py,内容如下: import time from cel

平头哥(Adger)的博客 1万+

Carla中如何渲染opendrive车道线和车道标识(全网独家,附代码)

carla是可以单独加载opendrive并渲染路面的,但是无法把车道线渲染出来,这是一个大坑,因为没有车道线就无法给感知输入。楼主已经实现,直接渲染车道线或者带PBR贴图的车道标识。实现起来非常简单,但必须对carla源码以及ue的开发足够了解。在carla源码中有一个很重要的类opendrivegenerator,它是关于opendrive渲染的全部方法,但是你是找不到它实例化的地方的,因为它被定义在蓝图关卡中。网上包括carla官方关于carla源码的分析少之又少,楼主将自己的经验写出来供大家参考。

u013998156的博客 1094

置顶必读(1) | 《YOLOv26实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)

🏆 本文收录于 《YOLOv26实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv26 官方特性、核心改进、多任务支持、部署优化与行业落地,内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么用”,更讲“为什么这样设计、如何真正落地到项目中”。

**My Coding Family** 9万+

Celery 4.3.0 使用supervisor 配置后台运行

参考文献 https://thomassileo.name/blog/2012/08/20/how-to-keep-celery-running-with-supervisor/ 前言 Supervisor是一个使你的进程可以在unix进程后台运行的python库。 本篇章的相关软件版本如下: Celery 4.3.0 supervisor 4.0.4 安装 pip3 in...

DevOps海洋的渔夫@专栏 526

大疆A型板使用经验分享(二)——A型板原理图和引脚图

一.原理图 二.引脚图

weixin_43361652的博客 7686

Python编程:使用supervisor管理Django-Celery进程

supervisor 进程管理工具 安装 python2 pip install supervisor 配置 $ mkdir config # 生成配置文件 $ echo_supervisord_conf &gt; config/supervisord.conf 修改配置文件 config/supervisord.conf 1、开启web管理界面:inet_http_server 2、开启管...

彭世瑜的博客 2005

芒果YOLOv12改进108:基于QARep提出多种<独家原创结构>:ReNLANQARep, QARep, CSCQARep, C3QARep, C2fQARep等,即插即用提升小目标检测

芒果YOLOv12改进108:基于QARep提出多种<独家原创结构>:ReNLANQARep, QARep, CSCQARep, C3QARep, C2fQARep等,即插即用提升小目标检测

包括YOLOv5、YOLOv7、YOLOv8等模型改进 755

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Celery异步任务队列与Flower监控实战:从原理到Python分布式系统搭建

在分布式系统与高并发Web开发中,异步任务处理是提升应用响应能力和系统可扩展性的核心技术。其核心原理是将耗时操作从主请求流程中解耦,通过消息队列实现生产者和消费者的分离,从而避免阻塞、提高吞吐量。这一技术价值在于能够构建松耦合、高可用的服务架构,广泛应用于后台作业处理、定时任务、数据处理等场景。具体到Python生态,Celery作为成熟的分布式任务队列框架,结合Redis或RabbitMQ等消息代理,提供了强大的异步执行能力。而为了有效监控和管理这些后台任务,Flower作为Celery的实时监控工具,提

weixin_34212762的博客 379

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

10个Python监控告警神器:打造完整的性能监控与异常检测工具链

在现代软件开发中,性能监控和异常检测是确保系统稳定性的关键环节。Python生态系统提供了丰富的监控告警工具,从应用性能监控到系统资源监控,再到异常告警和日志分析,应有尽有!🚀 ## 实时任务监控:Flower Flower是Celery分布式任务队列的实时监控工具,提供直观的Web界面来监控任务执行状态、队列深度和worker性能。通过Flower,你可以实时查看任务执行进度、重试次数和失

gitblog_00076的博客 487

Python异步任务调度性能翻倍方案(Celery 6.0集群实战全曝光)

掌握Python分布式任务调度框架Celery 6.0的集群配置,提升异步任务处理效率。适用于高并发场景,通过Redis或RabbitMQ实现消息队列优化,结合Supervisor进程管理保障稳定性,显著增强系统吞吐能力。性能翻倍方案值得收藏。

ProceGlow的博客 786

Celery 实战解析:Python 分布式任务队列的高效应用

本文深入解析了Python分布式任务队列Celery的高效应用。通过从异步任务需求切入,详细介绍了Celery的核心概念、快速上手步骤,并实战演示了定时任务、错误重试、复杂工作流编排等高级功能。文章还分享了与Django/Flask的集成、大数据处理以及生产环境配置、监控与部署的宝贵经验,是掌握这一强大“任务管家”的实用指南。

weixin_29058331的博客 118

VManagePlatform:一站式KVM虚拟化管理WebUI平台完全指南

VManagePlatform是一款功能强大的KVM虚拟化管理WebUI平台,专为简化KVM虚拟化环境的管理而设计。无论是新手还是有经验的管理员,都能通过直观的界面轻松管理虚拟机、存储和网络资源,实现高效的虚拟化运维。 ## 🚀 为什么选择VManagePlatform? 在复杂的IT环境中,高效管理KVM虚拟化资源至关重要。VManagePlatform提供了一站式解决方案,让您告别繁琐的

gitblog_01113的博客 880

构建稳定AI代码生成系统:从模型部署到长时运行实践

1. 先搞清楚“赛博牛马”到底在干什么 看到“Hermes + Codex,赛博牛马连续工作11小时”这个标题,很多人的第一反应可能是某个AI模型在跑马拉松式的代码生成任务。但如果你真打算用它来做点什么,比如自动化处理一些重复的编程工作,或者搭建一个能长时间稳定运行的代码辅助服务,那最该关心的不是它能跑多久,而是 它到底在什么条件下能跑起来、跑起来之后能干什么、以及怎么让它别在半夜崩掉 。 “赛博牛马”这个说法很形象,指的就是那些能不知疲倦、自动执行任务的AI代理或自动化脚本。这里的“Hermes”和“Co

weixin_33739627的博客 393

python开发的程序更_开发更健壮python程序的一些工具

在众多语言中, Java 生态系统发展得最好, 比如异常logging报警, 比如性能监控工具. Python其实生态也不错, 这里列出一些出色的工具.LogBook, 并结合 raven-python handler 与 sentry 集成.http://logbook.readthedocs.io/en/stable/index.htmlsentry raven-python https://...

weixin_39694264的博客 69

技术创业实战:从零构建Web服务的技术栈选型与工程实践

在软件开发领域,技术栈选型与工程实践是项目成功的基石。理解不同技术组件的原理与协作方式,能够帮助开发者构建高可用、可扩展的系统架构。其技术价值在于通过合理的分层设计与异步处理机制,提升开发效率与系统性能,确保核心业务逻辑的稳定运行。典型的应用场景包括构建数据驱动的Web服务、实现后台任务队列处理以及开发内容管理平台等。本文以FastAPI、PostgreSQL和Celery为核心,结合异步任务处理与RESTful API设计,详细演示了如何从环境搭建到生产部署,完整实现一个具备内容抓取与分析功能的智能平台。

weixin_34146805的博客 380

AI Agent与Workflow核心技术解析及开发实践

AI Agent和Workflow是大模型时代的两大核心技术范式。AI Agent通过自主目标分解、工具调用、记忆存储等能力实现智能决策,适用于复杂多变场景;而Workflow则通过确定性的流程编排确保高效执行,适合标准化业务。从技术实现看,Autogen、LangChain等框架分别针对不同场景提供解决方案,开发中需注意token优化等性能问题。在实际应用中,Agent Supervisor、Workflow Orchestration等架构模式能有效平衡灵活性与可靠性。掌握这些技术对构建智能系统至关重要

weixin_34068198的博客 588

Python后端工程师成长路线:从零到一掌握企业级开发核心技能

后端开发的核心在于构建健壮、可维护且能高效处理请求的服务,其技术栈围绕业务逻辑处理、数据持久化和接口提供展开。从原理层面看,这涉及HTTP协议、数据库系统、服务器架构等基础概念。掌握这些技术能显著提升系统的可靠性、扩展性和性能,对于构建高并发、高可用的互联网应用至关重要。在应用场景上,无论是电商平台、社交应用还是企业管理系统,都需要坚实的后端服务作为支撑。本文聚焦Python后端工程师的成长路径,系统梳理了从Python核心语法、Web框架(如Django/Flask)、数据库操作到RESTful API设

weixin_34192816的博客 325
上一篇: concurrent.futures
下一篇: MySQL 字符集问题
CoolScript
博客等级 码龄9年 26粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值