在用户注册的过程中,大部分网站除了要求输入手机号码外,还要求用户绑定常用的邮箱,以此来提高账户的安全性, 者通过邮件推送最新的产品信息,毕竟发送邮件比使用短信通知的成本要低太多。但如果用户在绑定邮箱的过程中输入了错误的邮箱地址,此时就需要验证用户输入的邮箱地址是否正确,因为验证的过程比较漫长,程序不可能中断在这里去等待用户验证成功,这是就可以使用异步的方式来发送验证邮件。
celery是一个基于Python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理。今天我要使用Python+celery实现异步发送验证邮件,首先安装celery,可通过以下命令安装
pip install celery |
通过以下命令启动celery
celery -A celery_execute_task.sendmail worker --loglevel=info -P eventlet |
出现如下图所示的内容即为celery启动成功。
通过celery实现发送验证邮件的使用方法如下
01 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoweb.settings') 02 django.setup() 03 04 # 创建实例对象 05 # 第一个parameter 可随意命名,但一般为本文件所在路径 06 # broker 指定中间人,斜杠后指定第几个数据库 07 app = Celery('celery_execute_task.sendmail', broker='redis://localhost:6379/3') 08 09 # 定义任务函数 10 @app.task 11 def send_activate_email(to_email, username, token): 12 """发送激活邮件""" 13 14 # 组织邮件信息 15 subject = '明日科技欢迎您' 16 message = '' 17 sender = settings.EMAIL_FROM 18 receiver = [to_email] 19 html_message = '<h1>%s, 欢迎您注册明日科技会员</h1>请点击下面链接激活您的账户<br/><a href="http://127.0.0.1:8000/mail/activate/%s">http://127.0.0.1:8000/mail/activate/%s</a>' % (username, token, token) 20 21 send_mail(subject, message, sender, receiver, html_message=html_message) |
Powered by 小羊羔外链网 8.3.11
©2015 - 2024 小羊羔外链网
您的IP:3.224.220.101,2024-04-23 02:46:25,Processed in 0.05025 second(s).