celery工作原理图

本文介绍了Celery的基本概念,它是一个基于Python的异步任务队列,用于处理耗时任务。Celery由消息中间件、任务执行单元和结果存储组成。还详细讲解了Celery Beat如何实现定时任务,并展示了配置示例。最后提到了Celery的简单、高可用、快速和灵活等优点。

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

1.celery 的介绍
1.1celery的基本介绍

celery是基于python实现的一个异步任务的调用工具,同时还是一个任务队列,主要用于处理耗时的任务。

celery也被称为芹菜。

celery架构由三个模块组成:消息中间件,任务执行单元和任务执行结果储存 组成。

其实那在刚接触的时候小编的理解是 :老板把地皮交给包工头去干  让包工头把房子建好  然后包工头找了工人    把任务分配给工人让工人去干       最后工人盖好房子老板验收(这是小编自己的理解也就适合入门)
 

 

1.2什么是celery beat

celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat

2.celery定时任务的配置

__init__.py

里面主要是celery初始化配置
from datetime import timedelta
 
from celery import Celery
import os
import django
 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "自己的项目名.settings")
django.setup()
 
celery_app = Celery('mycelery')
#读取celery 的配置
celery_app.config_from_object('celery_task.config')
 
# 定时任务
                             # 文件夹名.文件名
celery_app.autodiscover_tasks(['celery_task.times'])
 
celery_app.conf.update(
    CELERYBEAT_SCHEDULE={
        'sum-task': {
             # 文件夹名.文件名.方法名
            'task': 'celery_task.times.my_con',
             # 多少秒执行一次(eg:5秒一执行)
            'schedule':  timedelta(seconds=5),
             # 这是传入my_con方法中的参数
            'args': (5, 6)
        },
 
        'sum-task1': {
            'task': 'celery_task.times.my_print',
            'schedule':  timedelta(seconds=3),
            'args': ()
        },
    }
)

config.py

"""
    celery 配置
"""
消息中间件 broker
BROKER_URL = 'redis://xx.xx.xx.xx:6379/11'
任务结果存储 results  backend
    CELERY_RESULT_BACKEND = 'redis://xx.xx.xx.xx:6379/12'
    # 时区
    CELERY_TIMEZONE = 'Asia/Shanghai'
    # 导入指定的任务模块
    CELERY_IMPORTS = (
        'celery_task.tasks'
    )
task.py 里面写的是异步任务就不展示了
————————————————

times.py

里面写的是定时任务

  1. # 定时任务

  2. import time


from celery_task import celery_app
 
@celery_app.task()
def my_con(x,y):
    print(x,y)
    print('x和y相加')
    return x+y
 
@celery_app.task()
def my_print():
    print('22222222')
3.celery 启动命令
异步任务的启动命令:celery -A 任务名 worker -l info -P eventlet

定时任务的启动命令:celery -A 任务名 beat -l info

------------------------------------------------------------------------------------------------------------------------------------------

Celery有以下优点:

  • 简单:Celery 易于使用和维护,并且它 不需要配置文件 ,并且配置和使用还是比较简单的

  • 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务

  • 快速:单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级

  • 灵活: Celery 几乎所有部分都可以扩展或单独使用,各个部分可以自定义。

主应用创建-----celery

from celery import Celery
from django.conf import settings
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE","p6.settings")
app = Celery("worker")
app.conf.broker_url= "redis://:/6"
app.conf.result_backend = 'redis://:/7'
app.autodiscover_tasks(settings.INSTALLED_APPS)

app.autodiscover_tasks()

### Flask 框架原理图解析 Flask 是一种轻量级的 Python Web 应用框架,它通过提供简单的核心功能以及灵活的扩展机制来支持开发者构建各种规模的应用程序。以下是关于 Flask 的架构设计及其内部工作流程的具体分析。 #### 1. Flask 的基本组成结构 Flask 的核心组件主要包括以下几个部分: - **WSGI 接口**: WSGI(Web Server Gateway Interface)是 Python 中定义的标准接口协议,用于连接 Web 服务器和应用程序。Flask 使用 Werkzeug 工具包实现了这一标准[^3]。 - **路由系统**: 路由模块负责将 URL 映射到对应的视图函数。当客户端请求到达时,Flask 根据预设规则匹配相应的处理逻辑并执行相应操作[^4]。 - **模板引擎 Jinja2**: 提供了一种高效的方式来渲染 HTML 页面或其他类型的文档内容。Jinja2 支持变量替换、条件判断、循环等功能,极大地方便了前端页面的设计与维护[^5]。 - **请求/响应对象管理**: 对于每次 HTTP 请求,Flask 都会创建独立上下文环境下的 request 和 response 实例,以便更好地管理和传递数据信息[^6]。 #### 2. Flask 的运行过程概述 整个应用启动后经历的主要阶段如下所示: 1. 用户访问某个特定路径地址; 2. Flask 将该路径交给内部路由器进行查找适配器; 3. 如果找到对应关系,则调用关联好的控制器方法完成业务逻辑计算; 4. 最终返回给浏览器一段完整的网页或者 JSON 数据作为回应结果。 此过程中涉及到了许多底层技术细节,比如如何加载配置文件?怎样动态注册蓝图等等都是值得深入探讨的话题之一[^7]。 ```python from flask import Flask, render_template_string app = Flask(__name__) @app.route('/') def index(): return render_template_string('<h1>Hello World!</h1>') if __name__ == '__main__': app.run(debug=True) ``` 以上代码片段展示了最简单的 Flask 应用实例化方式及根目录下默认显示文字效果演示[^8]。 #### 3. 扩展性考虑 得益于其插件生态系统庞大且活跃的特点,使得即使面对复杂需求场景也能轻松应对。例如可以通过安装 SQLAlchemy 来实现 ORM 功能;借助 Celery 完成异步任务调度等高级特性集成进来进一步增强系统的整体表现力[^9]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值