前言
开发Django也有一段时间了,在最近的项目遇到了需要使用定时器的需求:在每天的00:00需要对每个用户的当天消费数据进行统计。这时候就需要用到定时任务,加上使用的Django开发,所以选择了Celery。
Celery是一个基于python开发的分布式任务队列框架,可以使用任务队列的方式在分布式的机器上执行任务调度。译名为:芹菜,不知道和分布式任务队列MQ有何关联。其主要包含:
- Broker:发送和接收MQ队列任务消息的方案,常用是RabbitMQ和Redis,还有Amazon SQS、Zookeeper
- Workers:处理任务的苦力,每个worker就相当于一个进程,可以有很多个worker
- Beat:任务安排,制定任务,定时管理,可以理解为管理worker工作的
- Backend:存储处理结果的后端
环境
本小节先记录Celery的初步使用,其中我的环境为:
- system:Ubuntu 16.04
- python:Python 3.5.2
- celery:4.2.0
- redis:2.10.6
安装
由于我是基于Python3开发,所以安装都使用pip3,我将Redis作为Broker服务