一、Celery的底层原理
1、什么是Celery
Celery是基于Python实现的一个异步任务调度工具,同时也是一个任务队列。
2、Celery的架构组成
Celery架构由三个模块组成:消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
消息中间件(Broker): 消息中间人,是任务调度队列,是一个独立的服务,是一个生产者消费者模式,生产者把任务放入队列中,消费者(worker)从任务队列中取出任务执行,任务的执行可以按照顺序依次执行也可以按照计划时间进行。但是Broker本身不提供队列服务,所以要集成第三方队列,推荐使用RatbbitMQ或Redis.
任务执行单元(worker):即执行任务的程序,可以有多个并发。它实时监控消息队列,获取队列中调度的任务,并执行它。
任务执行结果存储(task result store):由于任务的执行同主程序分开,如果主程序想获取任务执行的结果,就必须通过中间件存储。同消息中间人一样,存储也可以使用RabbitMQ、Redis;另外,假如不需要保存执行的结果也可以不配置这个模块。
# 代码实现
# 创建一个Celery类的实例对象
app = Celery('celery_tasks.tasks', broker='redis://192.168.153.131:6379/5')
# 定义任务函数
# @app.task
@app.task(name='send_register_sms')
def send_register_sms(mobile, sms_code):
'''发送短信验证'''
# 利用容联云发送短信
sendTemplateSMS(mobile, [sms_code, 5], 1)
# 发起任务
send_register_sms.delay(186666684684,123456)
3、使用场景
一般使用在比较耗时,不需要立即获取到结果的场景:发送短信验证码, 发送激活邮件
比较耗时,不需要立即获取到结果的场景:发送短信验证码, 发送激活邮件
更对内容参考:http://docs.celeryproject.org/en/latest/getting-started/introduction.html