记录一下Django发送异步邮件的过程
整个项目目录如下图所示
homework为整个项目的名称,t06为app名称1、分别在homework和t06下的__init__文件中的配置
from __future__ import absolute_import
# 使用异步的参数
from .celery import app as celery_app
# python使用mysql的必备参数
import pymysql
pymysql.install_as_MySQLdb()
import pymysql
pymysql.install_as_MySQLdb()
2、在settings.py文件中的部分配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
't06',
# 在INSTALL_APPS中需加入djcelery模块(必须)
'djcelery'
]
#1、数据库连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#引擎此处采用mysql的
'NAME': '要连接的数据库的名字',#name即数据库的名字,
'PORT': 3306,#mysql数据的端口,默认为3306
'HOST': "地址",#“host”即主机地址
'USER': "用户名", #“USER”指的是数据库注册用户名
'PASSWORD': '数据库密码'#数据库的密码
}
}
#2、缓存设置,主要用来记录激活邮件中发送的信息
SESSION_COOKIE_NAME = "session_id"
#此处采用Redis来存储缓存信息
CACHES = {
#此处为默认选择
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
#此处为自定义选择
"user": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/2",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
#3、邮件发送者的配置
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = "xxxxxxxxx@qq.com" # 发送者的帐号
EMAIL_HOST_PASSWORD = "授权码" # 授权码,不是邮箱密码(****)
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
#4、异步执行的配置,需要导入djcelery模块
import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://localhost:6379/1'
CELERY_CONCURRENCY = 2 # (设置worker的并发数量)
CELERY_RESULT_BACKEND = 'redis://localhost:6379/2'
CELERY_TASK_SERIALIZER = 'json' # 任务序列化和反序列化使用json
CELERY_RESULT_SERIALIZER = 'json' # 结果序列化为json