官方文档
读官方文档是必要的学习方法之一,耐心跟着文档操作会有很大的收获。
简单理解celery
celery是一个python的一个异步框架,可分布式、也可做定时任务,需要使用命令启动。它是一个典型的生产者 - 中间人 - 消费者模式,生产者负责生产数据,中间人实现队列,消费者拿到数据执行具体的任务。在celery中:
- 生产者
是指执行任务的入口,比如django的一个注册功能需要手机验证码,用户注册时调用的views就是生产者,发验证码的函数就可以视为消费者。views将用户注册的手机号交给消费者来发短信后,就可以立即响应用户,无需等待发短信完成,从而实现了异步的目的。 - 消费者
同样的,按照上方的例子,发短信就是消费者了。
前提条件
要想运行celery,需要在当前的python环境安装celery 、 redispython库(使用celery作为消息中间件)和redis服务器,并且需要先在当前环境中启动redis服务器。
在windows中,还需要安装eventlet,这是一个python库,celery在windows需要这个库的支持。经过测试,不使用这个库,celery没办法正常工作,暂不清楚是不是我使用的方法有问题才导致的
简单演示
这是最简单的演示,不适合复杂的项目。
- 在目录下创建一个初始化文件名为
celery_basic.py,内容如下:
import time
from celery import Celery
# 初始化一个celer实例,并传入消息中间件地址和结果保存地址
app = Celery('celery_demo', broker='redis://127.0.0.1:6379/3', backend='redis://127.0.0.1:6379/4')
@app.task
def send_msg(msg):
print('开始发送信息')
time.sleep(5)
print('信息发送完毕')
这个文件将celery初始化、配置和生产者send_msg写到了一起,小需求还是可以使用的,再复杂一点就需要抽象成一个独立的模块了。
- 接下来,再写一个生产者,由生产者调用消费者,命名为
do.py,内容如下:
from celery_basic import send_msg
for i in range(3):
send_msg.delay('注册成功')
- 启动celery程序
到这里,celery还不能工作,需要通过命令行启动程序,启动后,celery会自动监听注册在其中的任务,此时,消费者就会自动监听redis,如果有生产者往里面放数据,消费者就会消费数据。启动命令:
celery -A celery_basic worker -l info -P eventlet
- 运行生产者即
do.py即可看到运行结果

在下一盘中,我们要引入配置文件的方式。

浙公网安备 33010602011771号