Celery 介绍
Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子:
- 异步任务:将耗时的操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音频处理等等
- 做一个定时任务,比如每天定时执行爬虫爬取指定内容
- 还可以使用celery实现简单的分布式爬虫系统等等
Celery有以下优点:
- 简单:Celery 易于使用和维护,并且它 不需要配置文件 ,并且配置和使用还是比较简单的(后面会讲到配置文件可以有)
- 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
- 快速:单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级
- 灵活: Celery 几乎所有部分都可以扩展或单独使用,各个部分可以自定义。
执行流程:
组成模块:
- 任务模块 Task
- 用来创建异步任务,或者定时任务
- 消息中间件 Broker
- 用来调度生产者创建的任务,并将其放入消息队列(celery本身不提供消息队列, 官方推荐RabbitMQ 和 Redis 等)
- 任务执行单元 Worker
- 监控消息队列里的任务并执行。
- 结果存储 Backend
- 用于存储任务执行的结果。
初识Celery
安装Celery
我们直接通过pip来安装
1 | pip install celery |
创建tasks
1 | # 导入Celery对象 |
运行worker
在刚才创建的目录下
1 | 运行worker |
成功后会输入如下信息
调用任务
打开ipython
1 | # 导入任务 |
我们可以看到我们启动的worker已经把结果计算完了
我们还可以去redis
中查看
获取结果
那么我们如何获取到执行的结果呢?
我们可以
1 | from celery.result import AsyncResult |