Python的Celery使用

第一章 Celery简介

1、Celery是什么

1、Celery是python中使用比较多的并行分布式框架
2、Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统
3、Celery专注于实时处理的异步任务队列
4、Celery同时也支持任务调度

2、Celery使用场景

celery是一个强大的分布式任务队列的异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务(async task)和定时任务(crontab)。

  • 异步任务: 将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等
  • 定时任务: 定时执行某件事情,比如每天数据统计

3 、Celery工作流程

 

 

4、Celery核心组件

Celery的架构由三部分组成,消息中间件(Broker),任务执行单元(Worker)和任务执行结果存储(Result)组成。

  • 消息中间件(Broker)
    Broker负责创建任务队列,根据一些路由规则将任务分派到任务队列,然后将任务从任务队列交付给worker
  • 任务执行单元(Worker)
    Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中,运行后台作业的进程
  • 任务结果存储(Result)
    Result用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, Redis等

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

其他: Celery还支持不同的并发、序列化和压缩的手段

    • 并发:prefork、eventlet、gevent、threads
    • 序列化:pickle、json、yaml、msgpack 等
    • 压缩:zlib,、bzip2

第二章 Celery安装相关软件

备注:我是在windows10环境下做的,Linux应该大同小异

1、Celery安装

pip install celery

2、其他安装

这里有个坑.win10系统启动worker报错ValueError: not enough values to unpack (expected 3, got 0),解决办法:

pip install eventlet

Django中使用的时候,报错 AttributeError: ‘str’ object has no attribute ‘items’。redis版本太高,降低版本 pip install redis==2.10.6

pip install redis==2.10.6

第三章 Celery代码实现

1、Celery基本使用方法

备注:在这里,我使用的是redis作为消息中间件

 

 

 

 

参考

https://www.pythonf.cn/read/129031

posted @ 2020-12-24 16:10  等待の喵  阅读(4453)  评论(0编辑  收藏  举报