使用celery异步任务队列处理任务

基本概念

Celery 有三个角色:

任务的发出者: 发出所有执行的任务(任务就是函数)
任务队列: ( 存放所要执行的任务信息)
处理者: 也就是工作的进程或协程, 负责监听任务队列, 发现任务便执行对应的任务函数
特点:

任务发送者和处理者可以分布在不同的电脑上, 通过中间人进行信息的交换.
任务队列中的任务会进行排序, 先添加的任务会被先执行.
图示:
使用celery异步任务队列处理任务

安装

# 安装 celery:
pip install celery

使用

  • 创建celery对象并配置中间人地址
# 引入
from celery import Celery

# 创建celery对象, 
# 参数一: 随意起的名称 例如这里的demo 
celery_app = Celery('demo')
  • 配置
# 配置文件:  broker_url = '中间人的地址'

celery_app.config_from_object('配置文件路径')
  • 定义任务函数
# 我们这里需要使用上面定义好的对象, 装饰任务
# 这里有个参数: name='当前任务的名称'  这里当前任务的名称可以随便起
@celery_app.task(name='my_task')
def my_task(a, b):
    print('任务函数被执行')
    ...
  • 启动worker监听
celery -A 'celery_app文件路径' worker -l info
  • 发出任务
# 注意: 任务一定要调用 delay() 函数
my_task.delay(2, ,3)
应用举例:使用Celery完成发送短信

使用celery异步任务队列处理任务

;