Celery
- 一、Celery概述
-
- 1. 特点:
- 2. celery组成
- 3. 安装与使用
- 4. 邮箱配置
- 二、Celery的使用实操——发送邮件
-
- 1. 安装
- 2. 配置
一、Celery概述
1. 特点:
2. celery组成
-
配置任务队列Broker,采用redis保存要执行的任务队列
-
Client:任务的发出者
-
Worker:任务的处理者
3. 安装与使用
命令:pip install celery
4. 邮箱配置
登录QQ邮箱,点击账户开启邮箱服务
二、Celery的使用实操——发送邮件
1. 安装
2. 配置
- 配置任务队列Broker,采用redis保存要执行的任务队列,主要包含两部分:一部分是保存要执行的任务,一部分是保存执行的结果
1)在主目录下创建一个名为celery_tasks的文件夹
2) 在该文件夹下创建一个名为celery_config.py的配置文件
3)在主目录的config下已经配置好了redis
4) 配置celery_config.py文件,连接redis数据库。其中broker_url和result_backend这两个变量名是固定写法
5) 创建一个任务的文件夹email,一个任务创建一个文件夹
6)配置celery的入口文件,创建一个celery_main.py的文件
配置以下内容:
- 任务的处理者
1) 在email文件夹下创建一个名为tasks.py的文件夹。注:tasks.py的文件名固定,不能修改,email的文件名可以自定义。
2) 在settings.py文件中设置邮箱的配置,以QQ邮箱举例。
在config文件夹下创建一个名为emailConfig.py的文件夹
配置内容如下:
3) 获取QQ邮箱的授权码
登录QQ邮箱——设置——常规——第三方服务——启动IMAP/SMTP服务——生成授权码,获取到授权码,将授权码配置到emailConfig.py中
4) 以上内容配置完后,在tasks.py文件中编写邮件发送的处理函数
import logging
from django.core.mail import send_mail
from celery_tasks.celery_main import app
from drf6 import settings
# 创建一个日志器,__name__表示传的是当前这个模块名即文件名
logger = logging.getLogger(__name__)
# celery_tasks.celery_main中创建的app,并设置任务名
@app.task(name='send_email_task')
def send_email_task(email, username, password, classes_name):
"""
通知邮件任务
:param email: 收件人邮箱
:param username: 用户名
:param password: 密码
:param cl