Celery 笔记(Flower Supervisor)

本文详细介绍了如何使用Celery进行异步任务和定时任务处理,包括Celery的安装配置、在Django中的应用,以及通过flower进行监控。同时,还讲解了利用Supervisor管理Celery worker和beat进程的步骤,确保服务稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

celery执行流程

在这里插入图片描述

使用场景
  • 异步任务:将耗时操作任务交给Celery去异步执行,比如发短信、邮件、消息推送、音频处理等等
  • 定时任务:类似于crontab,比如每日数据统计

一、python调用celery

1. 安装配置
  • pip install celery[redis]
  • 消息中间件:RabbitMQ/Redis
  • app = Celery(‘xxx’, backend=‘xxx’, broker=‘xxx’)
2. 简单使用
  1. 新建tasks.py

    import time
    from celery import Celery
    
    
    broker = 'redis://localhost:6379/1'    #
    backend = 'redis://localhost:6379/2'   # 用于存储任务结果
    
    app = Celery('my_task', broker=broker, backend=backend)
    
    
    @app.task
    def add(x, y):
        print('enter call func ......')
        time.sleep(4)
        return x + y
    
  2. 新建app.py

    import time
    
    from tasks import add
    
    
    if __name__ == '__main__':
        print('start running.......')
        result = add.delay(2, 1)    # 将任务添加的celery队列中
        print('the task is over')
        print(result)
        while True:
            time.sleep(0.3)
            print(result.ready())
            if result.ready():
                print('take value: {}'.format(result.get()))   # 获取执行结果
                break
    
  3. 先执行app.py: python app.py

  4. 运行worker:celery worker -A tasks -l INFO -A 后面指APP的位置,及这行代码的位置:app = Celery('my_task', broker=broker, backend=backend) ,-l 后面试日志级别默认warning。

3. 使用配置文件
  1. 新建一个celery_app的python包,主要防止task和config文件,如下图:
    在这里插入图片描述

  2. init.py 文件代码:

    from celery import Celery
    
    
    app = Celery('demo')
    app.config_from_object('celery_app.celeryconfig')  # 通过 Celery 实例加载配置模块
    
  3. celeryconfig.py 文件代码:

    from datetime import timedelta
    from celery.schedules import crontab
    
    BROKER_URL = 'redis://localhost:6379/1'</
<think>好的,我需要帮助用户配置并启动DjangoCelery、Redis和Flower。首先,我应该回顾用户提供的引用内容,看看里面有没有相关的配置步骤。用户之前的问题是关于启动这些服务的,所以我要确保覆盖每个组件的安装、配置和启动命令。 首先,引用[2]提到了Django-Celery-Flower的配置,包括CELERYBEAT_SCHEDULE的设置,以及启动worker和beat的命令。引用[3]指出需要降低Redis版本到2.10.6以避免错误。引用[4]则提到了安装Flower和使用异步任务处理的建议,比如错误处理和定时任务配置。引用[1]中的URL配置可能涉及到静态文件的处理,但可能对当前问题帮助不大。 接下来,我需要按照逻辑步骤组织回答:安装依赖、配置Django项目、启动Redis、配置Celery、启动Celery worker和beat、启动Flower监控。每个步骤都需要检查引用中的相关信息,并确保命令正确无误。例如,安装Celery和相关库时,需要包括django-celery-beat和Flower。启动命令方面,引用[2]和[4]都提到了使用celery -A命令启动worker和beat,以及flower的命令。 另外,用户可能遇到的常见问题,比如Redis版本过高导致的错误,需要在注意事项中提及,如引用[3]所述。同时,定时任务的配置方法在引用[2]和[4]中都有涉及,可能需要说明如何在settings.py中设置CELERY_BROKER_URL和CELERY_RESULT_BACKEND,以及CELERYBEAT_SCHEDULE的例子。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何监控任务、处理错误、配置定时任务或优化性能。需要确保问题覆盖用户可能感兴趣的扩展主题。</think>以下是配置并启动 Django + Celery + Redis + Flower 的完整指南: --- ### 一、环境安装 ```bash # 安装核心依赖 pip install django celery[redis] django-celery-beat flower # 指定Redis兼容版本(避免AttributeError错误) pip install redis==2.10.6 # 根据引用[3]解决兼容性问题 ``` --- ### 二、Django项目配置 1. **settings.py** 添加配置: ```python # Celery基础配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' # 使用Redis作为消息代理 CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' # 定时任务配置(根据引用[2][4]) CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' ``` 2. **注册应用**: ```python INSTALLED_APPS = [ # ... 'django_celery_beat', # 根据引用[2][4]添加定时任务支持 ] ``` --- ### 三、服务启动流程 1. **启动Redis**: ```bash redis-server # 需提前安装Redis服务 ``` 2. **启动Django应用**: ```bash python manage.py runserver ``` 3. **启动Celery Worker**: ```bash celery -A your_project_name worker -l info -P eventlet # 根据引用[2][4] ``` 4. **启动Celery Beat(定时任务)**: ```bash celery -A your_project_name beat -l info # 根据引用[2][4] ``` 5. **启动Flower监控**: ```bash celery -A your_project_name flower --port=5555 # 根据引用[4] ``` --- ### 四、验证配置 1. 创建测试任务 **tasks.py**: ```python from celery import shared_task @shared_task def add(x, y): return x + y ``` 2. 通过Django Shell触发任务: ```python from tasks import add add.delay(3, 5) # 在Flower界面可观察任务状态 ``` --- ### 五、注意事项 1. **Redis连接问题**:确保Redis服务运行在默认端口6379 2. **项目命名**:替换`your_project_name`为实际Django项目名 3. **定时任务管理**:通过`http://localhost:5555`访问Flower监控界面[^4] 4. **Windows兼容性**:Worker需加`-P eventlet`参数(根据引用[2]) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值