Celery - 基本学习、异步任务的提交和执行、定时任务

本文介绍了Celery的基本概念,包括消息中间件、任务执行单元和结果存储。详细讲解了在Windows环境下安装与简单应用,以及如何实现异步任务和定时任务。还探讨了在Django项目中集成Celery的方法。
摘要由CSDN通过智能技术生成

目录

零、学习资料

一、简单认识

1-1 特性总结

1-2 架构总结

1-2-1 消息中间件(message broker) - 将任务提交至任务队列

1-2-2 任务执行单元(worker)- 负责将任务从任务队列中取出后的执行

1-2-3 任务执行结果存储(task result store)

1-3 功能总结

1-4 框架集成

1-5 版本支持情况

二、基于Windows系统的简单操作

2-0 安装

2-1 简单应用实现

三、Celery实现异步任务 - 单任务结构

3-0 常见的windows下的启动错误及解决方式

3-1 实现异步任务提交和执行

3-2 实现文件代替celery worker命令

3-3 使用相关方法、属性,查看任务执行结果

四、异步任务提交及执行 - 多任务结构

五、实现定时任务 - apply_async的使用

5-1 单任务下的实现方式

5-1-1 方式一、指定时间点执行任务

5-1-2 方式二、指定当前时间的多少时间后执行任务

5-2 多任务结构下的实现方式

六、基于Django使用Celery

6-0 settings.py文件内的注册

6-1 django项目内的celery配置文件

6-2 django内部实现函数


零、学习资料

官方文档 - 全英文

官方文档 - 部分中译

一、简单认识

Celery - 一个处理大量消息的分布式系统,专注于实时处理任务队列,并支持任务调度。

1-1 特性总结

  • 简单
    • Celery 易于使用和维护,并且它 不需要配置文件 。
      Celery 有一个活跃、友好的社区来让你寻求帮助,包括一个 邮件列表 和一个 IRC频道
  • 高可用
    • 倘若连接丢失或失败,职程和客户端会自动重试,并且一些中间人通过 主/主 或 主/从 方式复制来提高可用性。
  • 快速
    • 单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级(使用 RabbitMQ、py-librabbitmq 和优化过的设置)。
  • 灵活
    • Celery 几乎所有部分都可以扩展或单独使用。可以自制连接池、 序列化、压缩模式、日志、调度器、消费者、生产者、自动扩展、 中间人传输或更多。

1-2 架构总结

三大组成部分:消息中间件(message broker)、任务执行单元(worker)、任务执行结果存储(task result store)

1-2-1 消息中间件(message broker) - 将任务提交至任务队列

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等

celery通过使用Broker在客户端和职程之间调度,这个过程从客户端向队列添加消息开始,之后中间人把消息派送给职程。

1-2-2 任务执行单元(worker)- 负责将任务从任务队列中取出后的执行

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

!!注意:同一时刻,可以启用多个worker进行执行任务,只要启动worker,只要broker提交了任务,自动执行。

1-2-3 任务执行结果存储(task result store)

Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等

1-3 功能总结

1-4 框架集成

常用框架 框架内celery依赖包
Django django-celery
Pyramid pyramid_celery
Pylons celery-pylons
Flask 不需要
web2py web2py-celery
Tornado tornado-celery

1-5 版本支持情况

Celery version 4.0 runs on
        Python ❨2.7, 3.4, 3.5❩
        PyPy ❨5.4, 5.5❩
    This is the last version to support Python 2.7, and from the next version (Celery 5.x) Python 3.5 or newer is required.

    If you’re running an older version of Python, you need to be running an older version of Celery:

        Python 2.6: Celery series 3.1 or earlier.
        Python 2.5: Celery series 3.0 or earlier.
        Python 2.4 was Celery series 2.2 or earlier.

    Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform. - 官方表示不支持windows系统,即在win下使用broker需要做额外操作。

二、基于Windows系统的简单操作

2-0 安装

2-1 简单应用实现

from celery import Celery

# 创建Celery对象
app = Celery('hello', broker='amqp://guest@localhost//')

@app.task
def hello():
    return 'hello world'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值